2013-04-16 4 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», то ваша переменная $ content не настроена на что-либо полезное.

Попробуйте написать переменную $ contents каждый раз, чтобы вы могли видеть, что происходит в тех случаях, когда вывод «1».

Я думаю, что проблема с $ contents является проблемой, но вы не видите, где эта переменная устанавливается первоначально.

+0

Может быть, я должен добавить функцию стаи при чтении файла ... – Megadv

Смежные вопросы