parser

/faq/faq
/authors/авторы
/docs/документация

/powered_by_parser/в действии
/feedback/куда говорить
/jargon/жаргон

/download/скачать

/examples/примеры
/forum/форум



Поиск по форуму

По умолчанию ключевое слово ищется только в заголовке сообщения.

Ключевое слово:

Фильтровать по автору:



Почему пример со счётчиком годен только для примера

Sanja | bougakov@mailru.com 22.06.2001 00:05

А вот почему. Скачиваю я пример, устанавливаю на localhost - всё классно. Жму на рефреш, вижу увеличивающийся номерок, радуюсь. Должен отдельно отметить, что я держу открытыми два браузера - IE и Оперу, чтобы смотреть на вид сайта "с двух точек зрения".

Делаю в них одновременно рефреш и - опаньки:

[gif_template: write error] [unlink 'c:/home/bougakov.com/public_html/tmp.gif' failed: No such file or directory(#2)]
видно один процесс опередил другой и последнему не досталось файла tmp.gif - его убили долей секунды раньше. Я сильно обижаюсь и устраиваю скрипту крэш-тест - делаю две ссылающиеся друг на друга страницы, a la Робин Гуд и Монах Тук:

counter.parser:
^macro[counter_GIF]
<p><a href="counter2.parser?rand=^random[3000]">
Counter2</a>
и counter2.parser:
^macro[counter_GIF]
<p><a href="counter.parser?rand=^random[3000]">
Counter</a>
и натравливаю на них оффлайн-браузер с опциями start downloading again when finished и upload both good and bad files (влом было писать что-то своё, да и MSVC++ вис, собака, так что пришлось брать первый подручный инструмент). Пока он работает, пытаюсь браузером обратиться к странице http://localhost/counter.parser. Так вот, счётчик я вижу раз на десять попыток - всё остальное ерроры. А лог парсера пухнет от сообщений типа:
[21/Jun/2001 23:36:08] c:/home/bougakov.com/public_html/counter2.parser: 
unlink 'c:/home/bougakov.com/public_html/tmp1.gif' failed: Permission denied(#13)
[21/Jun/2001 23:36:08] c:/home/bougakov.com/public_html/counter2.parser: 
unlink 'c:/home/bougakov.com/public_html/tmp1.gif' failed: Permission denied(#13)
[21/Jun/2001 23:36:08] c:/home/bougakov.com/public_html/counter2.parser: 
unlink 'c:/home/bougakov.com/public_html/tmp.gif' failed: No such file or directory(#2)
[21/Jun/2001 23:36:08] c:/home/bougakov.com/public_html/counter2.parser: 
unlink 'c:/home/bougakov.com/public_html/tmp.gif' failed: No such file or directory(#2)
[21/Jun/2001 23:36:08] c:/home/bougakov.com/public_html/counter2.parser: 
unlink 'c:/home/bougakov.com/public_html/tmp1.gif' failed: No such file or directory(#2)
[21/Jun/2001 23:36:08] c:/home/bougakov.com/public_html/counter2.parser: 
unlink 'c:/home/bougakov.com/public_html/tmp.gif' failed: No such file or directory(#2)
А затем я вспомнил, что в парсере не реализован flock... Я сообразил, что творится у меня на диске ежели эта милая программуля много раз успела подраться за право записи в несчастный временный гифчик.. а у меня на этом диске не NTFS а FAT.. Но, слава богу, всё OK.

Вывод - все гифы нужно называть с использованием случайного числа, типа tmp1^rand[1000000].gif, чтобы предыдущий процесс не стёр временный файл, пока он ещё нужен следующиему и <u>нужно таки сделать лок открытых файлов</u>, поскольку проблема множества обращений к *.count файлам не снимается.

Ой, чую я, придётся выкладывать провайдеру тридцатник за установку MySQL - не обойтись без неё.

<<  Вернуться к списку сообщений


E-mail: mailbox@parser.ruCopyright © 1997-2001 Студия Артемия Лебедева