我正在开发一个自定义Magento模块并为它设置一个Cron作业 . 每件事情都运转良好,但我担心Cron作业的意外行为(随机执行次数) . 当我手动执行cron.php时,它会调用我的模块的观察者方法超过1次(执行次数不固定,有时3次,有时5次等) .
我只想执行一次观察者的方法 .
这是我的代码 .
1) Daffodil/Birthdaywish/etc/config.xml
...
...
<crontab>
<jobs>
<daffodil_birthdaywish>
<schedule>
<cron_expr>* * * * * *</cron_expr>
</schedule>
<run>
<model>birthdaywish/observe::sendBirthdayMail</model>
</run>
</daffodil_birthdaywish>
</jobs>
</crontab>
...
2) Daffodil/Birthdaywish/Model/observe.php
Class Daffodil_Birthdaywish_Model_Observe {
public function sendBirthdayMail() {
echo "<h1>Hello</h1>";
}
}
如果我执行cron.php,预期的输出应该是
Hello
但目前的产量是一段时间
Hello Hello Hello
还有一段时间
Hello Hello Hello Hello Hello
我只是想知道为什么观察者的方法执行次数(随机次数)?
有没有办法将预定的cron的状态更改为"COMPLETE"所以它不会执行两次?
1 回答
我认为这是因为你的cron时间表:
您指定cron应始终运行 . Magento的cron.php只是收集所有cron作业的所有信息,并在Magento数据库的cron_schedule表中安排它们 .
应该一直调用cron.php,它管理所有其他cronjobs .
因此,例如,如果您将cronjob设置为每小时运行一次并定期调用cron.php,那么它每小时只运行一次 .
你会这样做:
所以它每小时0分钟(5点钟,6点钟等)运行 .
还可以看看这里:http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/how_to_setup_a_cron_job