Magento提供了强大的计划任务功能(Cron Job),使用计划任务,我们可以方便的按照一定的时间规律生成Google网站地图,更新汇率,清除日志,降价通知等等,此外我们还可以根据需要在自己开发的模块中添加计划任务的功能,下面我们将介绍怎样在自己的模块中添加计划任务。
首先我们需要开启Cron功能,在服务器上添加Cron,如果你用的cPanel面板,在面板中可以直接添加,如果是自己的主机,比如Linux主机,我们可以这样添加:
#crontab -e
添加
*/5 * * * * /bin/sh /var/www/magento1510/cron.sh
其中 */5 * * * * 表示系统将每5分钟执行一次这个脚本
/var/www/magento1510/cron.sh 是Magento网站根目录下的cron.sh文件的绝对地址,请根据自己的配置修改。
然后重启Cron
#service cron restart
Magento将每五分钟检查各模块下的计划任务,并生成计划任务表,保存在cron_schedule表中,当某个计划任务符合时间条件,Magento便执行该计划任务,并把执行的情况记录在该表中,下面我们看以下怎样在模块中添加计划任务。
一个典型的例子是newsletter,我们在/app/code/core/Mage/Newsletter/etc/config.xml中发现了下面一些配置:
<config>
<crontab>
<jobs>
<newsletter_send_all>
<schedule><cron_expr>*/5 * * * *</cron_expr></schedule>
<run><model>newsletter/observer::scheduledSend</model></run>
</newsletter_send_all>
</jobs>
</crontab>
</config>
上面的配置指定了一个计划任务newsletter_send_all,它每五分钟执行一次,将执行Mage_Newsletter_Model_Observer类中的scheduledSend()函数,该文件位于/app/code/Mage/Newsletter/Model/Observer.php,打开该文件就可以看到该计划任务执行的内容,如果我们要在自己的模块中添加计划任务,按照上面的例子在config.xml添加相应的contab即可。
(责任编辑:好模板) |