2012-04-24 147 views
2

我有一个每5分钟运行一次cron的PHP脚本。每5分钟执行一次PHP cron,但在15分钟后放入一个函数进入休眠状态

*/5 * * * * /var/www/html/processMail.php 

脚本里面有,我想执行每15分钟一个功能,这样的功能将处于睡眠模式,但脚本的其余部分将每5分钟的过程。

这个疯狂的想法会工作吗?

+2

这听起来像对我来说是一个黑客?你能解释一下你试图解决的实际问题,而不是你提出的解决方案吗?我首先想到的是,这可能会更好地分为5分钟和15分钟。 – Nanne 2012-04-24 06:57:50

+0

嗨,Nanne。感谢您的建议。我认为应该有一个简单的方法来使一个功能睡眠并运行一个特定的时间,而不是设置一个新的cron。 – 2012-04-24 07:57:07

+0

但这个问题没有道理,因为它是:)。如果您每5分钟启动一个脚本,启动一个应该每15分钟运行一次的函数,您很快就会收到很多电话!或者你的意思是你想每5分钟运行一次脚本,但是3次跳过某个函数2次? (所以不是5日和10日,而是15日,然后不是20日和25日,而是30日)?因为那不是“睡眠”,那只是检查它是否应该运行。这是可行的 – Nanne 2012-04-24 08:02:12

回答

4

这个疯狂的想法会工作吗?

不,它不会。每15分钟的功能 - 即使你设法等待15分钟 - 每5分钟执行一次 - 所以有效的15分钟功能每5分钟执行一次。代替创建每15分钟执行的第二脚本或添加一个参数:

*/5 * * * * /var/www/html/processMail.php --mins=5 
*/15 * * * * /var/www/html/processMail.php --mins=15 

然后使用功能解析commandline-parameters in PHP(和getopt),以进行相应的处理。另请参阅the section about commandline usage in the PHP manual

+0

感谢澄清,这个想法不会工作,但创建第二个脚本执行每15分钟。 – 2012-04-24 07:24:14

1

您可以将迭代器保存在文件或数据库中,并在每次运行后增加它,这样,只能在运行脚本的3次时运行一次。

但是,更好的解决方案是简单地编写另一个脚本并每15分钟运行一次。