0

我需要每隔一个星期三运行 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.

等等。

有可能吗,还是我应该以其他方式解决?

4

3 回答 3

3

您的发送逻辑(调度、节流等)实际上应该在应用程序本身中处理,而不是通过 cron。如果您将逻辑移至应用程序,您可以设置一个 cronjob 以每 10 分钟运行一次您的应用程序脚本,它只会在时间合适且应用程序告诉它发送时发送电子邮件。

于 2013-02-21T14:06:53.240 回答
0

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

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

于 2013-02-21T14:15:33.530 回答
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 分钟运行一次作业并让您的脚本确定日期/时间是否正确

于 2013-02-21T14:20:35.633 回答