Php 通过模拟Cron作业下载电子邮件附件--竞争条件
我需要一个cron作业来检查电子邮件帐户和下载某些附件。此cron作业将每分钟运行一次。我的问题是,当第一个脚本下载电子邮件附件时,第二个(或第三个或第四个…)脚本很可能与之前执行的脚本一起运行。问题是,我不确定什么是防止后续脚本尝试下载以前脚本已下载(或当前正在下载)的电子邮件附件的最佳方法 其他详情:Php 通过模拟Cron作业下载电子邮件附件--竞争条件,php,multithreading,codeigniter,cron,Php,Multithreading,Codeigniter,Cron,我需要一个cron作业来检查电子邮件帐户和下载某些附件。此cron作业将每分钟运行一次。我的问题是,当第一个脚本下载电子邮件附件时,第二个(或第三个或第四个…)脚本很可能与之前执行的脚本一起运行。问题是,我不确定什么是防止后续脚本尝试下载以前脚本已下载(或当前正在下载)的电子邮件附件的最佳方法 其他详情: 使用CodeIgniter 使用Zend邮件库访问电子邮件和下载附件 电子邮件可能会是POP3 我想知道我是否能以某种方式使用“message id”头。您可以通过使用锁文件防止并发cro
- 使用CodeIgniter
- 使用Zend邮件库访问电子邮件和下载附件
- 电子邮件可能会是POP3
我想知道我是否能以某种方式使用“message id”头。您可以通过使用锁文件防止并发cron脚本运行。您可能不希望并发脚本下载附件,您将面临恶劣的竞争条件 工作原理如下: starter.sh
- 检查锁文件是否存在,如果存在,请立即退出
- 如果没有,它将创建一个锁文件并启动main.php脚本
- 在main.php完成后,它将删除锁文件
- 这样,如果main.php崩溃或抛出异常,锁文件将被删除,并且可以在下一分钟重新启动
- 进行实际下载
他们只是在循环中使用顶部的sql select(select top 1未下载/下载消息)。您需要一些东西来处理崩溃和重新启动php进程,但这就是它的jist。多个脚本同时运行实际上是理想的。我正在尝试模拟多线程。我每小时处理数千封电子邮件附件。