Magento模块中添加计划任务Cron Job【magento二次开发】

Magento提供了强大的计划任务功能(Cron Job),使用计划任务,我们可以方便的按照一定的时间规律生成Google网站地图,更新汇率,清除日志,降价通知等等,此外我们还可以根据需要在自己开发的模块中添加计划任务的功能,下面我们将介绍怎样在自己的模块中添加计划任务。

首先我们需要开启Cron功能,在服务器上添加Cron,如果你用的cPanel面板,在面板中可以直接添加,如果是自己的主机,比如Linux主机,我们可以这样添加:
  1. #crontab -e
添加
  1. */5 * * * * /bin/sh /var/www/magento1510/cron.sh
其中 */5 * * * * 表示系统将每5分钟执行一次这个脚本
/var/www/magento1510/cron.sh 是Magento网站根目录下的cron.sh文件的绝对地址,请根据自己的配置修改。
然后重启Cron
  1. #service cron restart
Magento将每五分钟检查各模块下的计划任务,并生成计划任务表,保存在cron_schedule表中,当某个计划任务符合时间条件,Magento便执行该计划任务,并把执行的情况记录在该表中,下面我们看以下怎样在模块中添加计划任务。

一个典型的例子是newsletter,我们在/app/code/core/Mage/Newsletter/etc/config.xml中发现了下面一些配置:
  1. <config>
  2.     <crontab>
  3.         <jobs>
  4.             <newsletter_send_all>
  5.                 <schedule><cron_expr>*/* * * *</cron_expr></schedule>
  6.                 <run><model>newsletter/observer::scheduledSend</model></run>
  7.             </newsletter_send_all>
  8.         </jobs>
  9.     </crontab>
  10. </config>
上面的配置指定了一个计划任务newsletter_send_all,它每五分钟执行一次,将执行Mage_Newsletter_Model_Observer类中的scheduledSend()函数,该文件位于/app/code/Mage/Newsletter/Model/Observer.php,打开该文件就可以看到该计划任务执行的内容,如果我们要在自己的模块中添加计划任务,按照上面的例子在config.xml添加相应的contab即可。

你可能感兴趣的:(magento)