2013-04-16 61 views
0

我有一个PHP柜台的问题。我需要计算两个变量,用|分隔,但计数器通常重置为|1。我已经使用了flock函数,但它仍然不起作用。此外有时它不会增加变量的值。PHP柜台重置

numeri.txt(计数器):

5098|561307

这是PHP脚本:

$filename="numeri.txt"; 
$contents=file_get_contents($filename); 
$fp=fopen($filename,'a'); 
if(!flock($fp,LOCK_EX)) 
{ 
    while(true) 
    { 
     usleep(100000); 
     if(flock($fp,LOCK_EX)) 
     { 
      break; 
     } 
    } 
} 
ftruncate($fp,0); 
$contents=explode("|",$contents); 
$clicks=$contents[0]; 
$impressions=$contents[1]+1; 
fwrite($fp,$clicks."|".$impressions); 
flock($fp,LOCK_UN); 
fclose($fp); 

如何修复代码?

+0

这是你的作业吗? :D – Hydroid

+0

这个问题该怎么办? – Megadv

+1

为什么你在'flock'调用中做了一个非阻塞,然后用while循环阻塞了脚本?为什么不让操作系统阻止? – webbiedave

回答

2

如果您的输出重置为“| 1”,那么您的$ contents变量未设置为任何有用的值。

尝试每次写入$ contents变量,以便您可以在输出为“| 1”的场合看到它是什么。

我认为$ contents是问题,但是您不会显示最初设置变量的位置。

+0

也许我应该在阅读文件时添加鸡群功能...... – Megadv