我有一个PHP脚本,可以记录网站的广告(横幅)并将它们存储到.dat文件中。在此文件中,将保存ID,URL和其他重要信息。我遇到的问题是,在任何给定时间页面上都有4个广告,因此当php脚本在打开时尝试写入时,.dat文件经常会损坏。
我检查并尝试了这个解决方案,但它没有帮助我:
PHP Simultaneous file access / flock() issue
我目前使用的功能如下:
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);
}
任何帮助都会受到赞赏,因为我一直在摸不着头脑。 侧面的信息,客户端不希望他们的代码被重写为使用数据库而不是文件,以便选项出来。
谢谢!
答案 0 :(得分:1)
fopen with'w'在你可以选择植绒之前截断文件。
答案 1 :(得分:0)
您几乎不想使用flock
解锁文件;只需使用fclose
;当句柄关闭时,文件将被解锁,这样你知道解锁后不会发生缓冲写入。