如何设置一个cronjob每周三运行5次?

时间:2013-02-21 14:03:24

标签: php cron

我需要每隔一个星期三运行一次脚本5次。 更令它复杂化的是,脚本需要在每次运行之间暂停至少1小时,1小时10分钟就可以了。

我需要暂停,因为它是一个简报发送者,它发送了很多电子邮件,服务器的邮件限制是每小时3000封电子邮件。

脚本应该运行的示例:

Wednesday February 20th at 10.00, 11.10, 12.20, 13.30, 14.40.
Wednesday March 6th at 10.00, 11.10, 12.20, 13.30, 14.40.
Wednesday March 20th at 10.00, 11.10, 12.20, 13.30, 14.40.
Wednesday April 3th at 10.00, 11.10, 12.20, 13.30, 14.40.

等等。

是否有可能,或者我应该以其他方式解决它?

3 个答案:

答案 0 :(得分:3)

您的发送逻辑(调度,限制等)应该在应用程序本身中处理,而不是通过cron处理。如果将逻辑移动到应用程序,则可以设置cronjob以每10分钟运行一次应用程序脚本,并且只在适当的时间发送电子邮件并且应用程序告知它发送。

答案 1 :(得分:0)

PHP中的datetime类也可用于获取天数和复杂的时间戳组合。您可以使用循环计算所有未来日期。通过这种方式,您可以对星期三进行索引并使用偏移计数器来定义您希望它执行多少周和/或时间的延迟。

http://us2.php.net/manual/en/book.datetime.php

答案 2 :(得分:0)

这是一个使用php管理crons的指南:http://net.tutsplus.com/tutorials/php/managing-cron-jobs-with-php-2/

基本上你的cron将采用以下形式:

Minutes [0-59]  
|   Hours [0-23]  
|   |   Days [1-31]  
|   |   |   Months [1-12]  
|   |   |   |   Days of the Week [Numeric, 0-6]  
|   |   |   |   |  
1   2   3   4   5 home/path/to/command/the_command.sh

您可能需要单独的作业来运行所需的模式,或者每10分钟运行一次作业,让脚本确定日期/时间是否正确