我需要一个cron作业来检查电子邮件帐户并下载某些附件。这个cron作业将每分钟运行一次。我的问题是,当第一个脚本正在下载电子邮件附件时,第二个(或第三个或第四个......)脚本将与之前执行的脚本一起运行。问题是我不确定阻止后续脚本尝试下载以前脚本已下载(或当前正在下载)的电子邮件附件的最佳方法是什么。
其他细节:
我想知道我是否可以某种方式使用“message-id”标题。
答案 0 :(得分:2)
您可以使用锁定文件阻止并发cron脚本运行。您可能不希望并发脚本下载附件,您将遇到令人讨厌的竞争条件。
像这样工作:
starter.sh
main.php
修改
我明白了。然后,您需要更复杂的设置。读取from,subject和datetime的单线程脚本,并将它们放在队列中(db表非常适合这种情况)。它应该像我上面解释的那样工作。其次,你有一个php进程池,它读取db表并根据表中的数据下载附件。
由于他们使用线程安全数据结构(数据库),因此可以在每行上设置下载/下载的标志。
他们只是在顶部使用sql select进行循环(选择前1个未下载/下载消息)。你需要一些东西来处理崩溃并重启php进程,但这就是它的主旨。