|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Eugene Grosbein 2:5006/1 01 Oct 2001 17:00:01 To : Kabanov Alexey Subject : Re: счетчик -------------------------------------------------------------------------------- KA> Имею самописный счетчик посещений: Пришло два коннекта почти в одно и то же время. KA> open(count, "<$counter"); Две копии скрипта открыли файл, но один чуть раньше. KA> @count=<count>> ; KA> foreach (@count) { KA> if (/$slk=(\d*);/){$dob=$1+1;s|$slk=\d*;|$slk=$dob;|gi}} KA> close(count); Первый сделал что надо, и закрыл файл. А второго затормозил шедулер, к примеру. KA> open(countout, ">$counter"); KA> flock(countout, LOCK_EX); KA> print countout @count; KA> close(countout); Первый переписал файл и завершился. Проснулся второй. Переписал файл сам, затерев информацию и предыдущем коннекте. KA> Вызываю его как картинку с защитой от кеширования. KA> Hо посещения засчитываются не все (сравнил его показания с счетчиком KA> топ-лист) Скажите пожалуйста, что ему не хватает для учета ВСЕХ посещений? Открывать файл на чтение-запись один раз, блокировать, читать-писать, закрывать. Eugene -- "Люди забыли эту истину," - сказал Лис, - "но ты не забывай" --- slrn/0.9.7.0 (FreeBSD) * Origin: SVZ-Service (2:5006/1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/26093225d87d2.html, оценка из 5, голосов 10
|