У меня проблема с счетчиком 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);
Как исправить код?
Это ваша домашняя работа? : D – Hydroid
Что связано с вопросом? – Megadv
Почему вы выполняете неблокирование в вызове 'flock', но затем блокируете скрипт с циклом while? Почему бы не позволить ОС делать блокировку? – webbiedave