«Спеста» — винтажная система статистики, часть II.

Ещё несколько советов по работе со «Спестой», предыдущая пачка — в первой части статьи.

Совет пять. Судя по коду, «Спеста» иногда способна пропустить какую-то часть хитов (кстати, у «Spesta 2» тот же недостаток). Для слабопосещаемого сайта это не слишком важно, для сильнонагруженных станет серьёзной проблемой. Для того, чтобы поправить ситуацию, открываем файл counter.php, ищем строки, содержащие «SP_fr ($COUNT_FILE)» и «SP_fw ($COUNT_FILE, $content)». Заменяем их на следующие куски кода (первую найденную строку — на первый, вторую — на второй):

$fp = fopen($COUNT_FILE, 'a+');
flock($fp, LOCK_EX);
fseek($fp, 0);
$conts = fread($fp, filesize($COUNT_FILE));
ftruncate($fp, 0);
fseek($fp, 0);
fwrite($fp, $content);
fclose($fp);

Совет номер шесть. Открываем все PHP-файлы последовательно и в каждый, в начало PHP-кода ставим нижеприведённый кусок. Файл mailto.php удаляем.

$s_addurl = "";

Комментарии 9

yakovis.com № 1
А не проще ли выложить собственный дистрибутив? :) Чем вот такие правки по одной публиковать?
Евгений Степанищев (bolknote.ru) автор № 2
Его ж поддерживать надо, отвечать на письма читателей и т.д. Да и за отправную точку лучше взять Spesta 2.
isk.livejournal.com № 5
совет 5.1
после выполнения совета 5 вдумчиво читаем http://spectator.ru/technology/php/flock_workaround
Евгений Степанищев (bolknote.ru) автор № 6
Искандер, что тут читать? Думаешь, я знаю о flock меньше? Дима просто не умел тогда обращаться с flock. Что же до неработы flock на «NFS and many other networked file systems», FAT и возможно некорректной работы под multithread ISAPI, то меня это мало волнует — много ты видел блогов, установленных с такими условиями?

И даже в этом случае (если не удасться сделать flock), данные потеряются точно так же как при последовательном чтении/записи в немодифицированной «Спесте».
skurudo.livejournal.com № 7
Комментарий для Евгения Степанищева:

А можно рекомендации конкретно по Spesta2? Дело в том, что далеко не везде включен register_globals ;-(
Евгений Степанищев (bolknote.ru) автор № 8
Я в ней копался совсем немного, но дыры уже вижу и недостаки те же. Через несколько дней посмотрю её поближе, тогда и опубликую. Я сам хочу попробовать на неё перейти.
Евгений Степанищев (bolknote.ru) автор № 9
Как же она неаккуратно написана. Автор двигался в правильном направлении, но как-то… недотянул. Всё-таки я переоценил своё желание делать хоть что-то на праздники. Возможно, смотреть буду после 9-10-го.

А может и завтра посмотрю. Править по-крупному не буду, только те же правки, что и в original Spesta.