Привет всезнающий ALL.
Пишу (переделываю в очередной раз) небольшой скрипт (s2m), дабы он закидывал логи сквида в БД. Есть труба (mkfifo /etc/squid3/access), она указана в конфиге сквида в качестве лог файла. Запускаем обработчик (s2m), запускаем сквид, все ок. Каркас примерно такой:
open(FIFO,"/etc/squid3/access");
while($original=<FIFO>) { #обработка
}
И длится эта идилия пока не случится в системе squid3 -k reconfigure или squid3 -k rotate (ротейт не нужен :-), но иногда приходится делать реконфиг). Я не понимаю что сквид с трубой делает, но скрипт-читатель отваливается (EOF в трубе?). А сквид не может писать в трубу без читателя и отваливается. Приходится после каждого чиха перезапускать s2m. Если тупо указать:
while(1) { $original=<FIFO>;
if ($original != '') { #обработка
}} То скрипт не отваливается - продолжает работать. Но не аккуратненько както...
Собсна вопрос - как можно "взять" трубу "покрепче" - чтобы скрипт его не терял?