Web サイトの広告 (バナー) をログに記録し、それらを .dat ファイルに保存する php スクリプトがあります。このファイル内には、ID、URL、その他の重要な情報が保存されます。私が抱えている問題は、常にページに 4 つの広告があるため、.dat ファイルが開いているときに php スクリプトが書き込もうとすると、.dat ファイルが破損することが多いことです。
この解決策を確認して試してみましたが、役に立ちませんでした:
PHP 同時ファイル アクセス / flock() の問題
私が現在使用している関数は次のようになります。
function writeads(){
global $bannerAdsPath, $ads, $bannerAds;
$data = fopen($bannerAdsPath, 'w') or die();
flock($data, 2) or die();
fputs($data, @join("\n", $ads)."\n");
while (list ($key, $val) = each ($bannerAds)) {
if (($key != '') && ($val != '')) {
fputs($data, $key.'='.$val."\n");
}
}
flock($data, 3);
fclose($data);
reset($bannerAds);
}
私はこれについてしばらく頭を悩ませていたので、どんな助けもいただければ幸いです。ちょっとした情報ですが、クライアントは、ファイルの代わりにデータベースを使用するようにコードを書き直すことを望んでいなかったため、そのオプションはありません。
ありがとう!