
У меня есть скрипт Perl, который использует NET::IMAPClient
и MIME::Parser
который просто считывает новые письма с сервера IMAP и сохраняет все вложения на диск.
Мой вопрос: как лучше всего запускать этот скрипт, как только приходит новое письмо? Я могу использовать cron для периодического запуска скрипта, я могу проверять его даже каждые несколько секунд, но я подозреваю, что есть способ получше.
В идеале я бы действовал немедленно при получении письма, как при системном событии. Какое распространенное программное обеспечение и методы для этого существуют? Я использую систему Debian.
решение1
В общем, вы продолжаете проверять электронную почту, если только, как уже упоминалось,@ДжоэлДэвис, сервер можно расширить с помощью некоторой команды push.
Кроме того, если ваш почтовый сервер поддерживает это, можно использовать расширение IDLE для IMAP4:
IMAPClient имеет встроенную поддержку IDLE:
решение2
В общем случае программы, передающие данные, работают по принципу «опроса» или «проталкивания». Если только сервер IMAP не может быть изменен для проталкивания данных на сервер со скриптом Perl, вы можете только периодически опрашивать события.
Альтернативой cron
было бы просто демонизировать скрипт perl, чтобы он просто переходил sleep
после каждой проверки. Это сэкономит вам execve
и в зависимости от того, как часто вы опрашиваете, вы даже можете сэкономить время, необходимое для установления TCP-соединения