Достаточно одного узкого места, чтобы поставить колом всю систему.
Частично асинхронная система лучше, чем система вообще без асинхронности.
Но хуже, чем полностью асинхронная.
Создание и поддержка множества процессов и потоков для синхронной обработки - операция недешевая, даже если они в находятся в состоянии ожидания. На практике это выглядит как бешеный рост LoadAverage.
Асинхронность позволяет держать фиксированное количество рабочих процессов (в идеале, по одному процессу на каждое процессорное ядро). Процессы создавать не надо, переключать почти не надо - в биткойне у меня такая схема обрабатывала тысячи одновременных коннектов с загрузкой cpu менее 1%.
чтобы столбцы не разъезжались, иначе ничего не понять.
(
date +'%Y.%m.%d %H:%M:%S -- Started...'
while : ; do
tail -F /var/log/nginx/access.log |
grep --line-buffered -i -- "smtp" |
while read line; do
date +"%Y.%m.%d %H:%M:%S -- $line"
php -f /path/to/checkmail.php
done
date +'%Y.%m.%d %H:%M:%S -- Restarted...'
sleep 30
done
) > /var/log/checkmail.log 2>&1 &