我有一個計數器問題。我需要計算兩個變量,用|
分隔,但有時計數器不會增加變量的值。帶羊羣的PHP計數器
numeri.txt(計數器):
6122|742610
這是PHP腳本:
$filename="numeri.txt";
while(!$fp=fopen($filename,'c+'))
{
usleep(100000);
}
while(!flock($fp,LOCK_EX))
{
usleep(100000);
}
$contents=fread($fp,filesize($filename));
ftruncate($fp,0);
rewind($fp);
$contents=explode("|",$contents);
$clicks=$contents[0];
$impressions=$contents[1]+1;
fwrite($fp,$clicks."|".$impressions);
flock($fp,LOCK_UN);
fclose($fp);
我還有一個計數器,它是慢了很多,但數兩個值(點擊和展示)究竟。有時,計數器numeri.txt
會比另一個計數器計入更多的展示次數。爲什麼?我怎樣才能解決這個問題?
檢查是否第二,while循環運行到max_execution超時時間,我認爲sime類型的死鎖/飢餓情況。 – worenga 2013-05-11 09:08:33
當你說「有時候」時 - 你的意思是說某個時候功能增加了,有時卻沒有?或者你的意思是說每行都不會影響一些行嗎? – bestprogrammerintheworld 2013-05-11 09:13:10
我的意思是功能增加了,但是比它應該增加 – Megadv 2013-05-11 09:14:36