2013-04-16 62 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