cron job 是什么
Magento 的一些功能要正常运行就必须要用到 cron job,它是一系列的定时任务,这些任务包括:
- Catalog price rules
- Newsletters
- Generating Google sitemaps
- Customer Alerts/Notifications (product price change, product back in stock)
- Reindexing
- Private sales (Magento EE only)
- Automatic updating of currency rates
- All Magento e-mails (including order confirmation and transactional)
官方建议以 Magento 文件所有者的身份运行 cron ,不要用root ,也不要用web server user (一般指 www-data)
UNIX 系统的计划任务是由crontab
来执行的,通过他可以在固定的时间间隔执行指定的系统指令或shell script,当然包括 php 脚本。crontab 是一个记录某时刻执行某命令的文件。每个系统用户都有他自己的 crontab,crontab 会以他自己的所有者的身份运行命令。所以官方推荐你用 magento 文件所有者的身份运行cron,就是因为需要以该身份运行 magento 命令。
cron job 是依赖 crontab 去完成功能的,cron job 是 magento 2的提供的定时任务,crontab 是系统的功能,强烈建议不要用 windows 系统作为生产环境,不然这一块会很麻烦的。
如何配置 cron job
- 找到 php 的目录查看php 的目录,如下命令即可:
which php
返回结果例如:
/usr/bin/php
- 创建 cron job我们先以 magento 文件所有者的身份登陆进去,博主是 ThankIT
crontab -e
第一次要你选择编辑器,照着指示做就成。然后我们会编辑一个文件,添加如下类似的代码在文件末尾,最后保存一下退出。
* * * * * <path to php binary> <magento install dir>/bin/magento cron:run | grep -v "Ran jobs by schedule" >> <magento install dir>/var/log/magento.cron.log * * * * * <path to php binary> <magento install dir>/update/cron.php >> <magento install dir>/var/log/update.cron.log * * * * * <path to php binary> <magento install dir>/bin/magento setup:cron:run >> <magento install dir>/var/log/setup.cron.log
| grep -v "Ran jobs by schedule"
用来从日志中筛选出相关记录,方便查看。
* * * * *
表示每分钟,官方推荐时间间隔。
第一条命令(magento cron:run
)负责重建索引,自动发邮件,生成sitemap 等日常工作,剩下两个是Component Manager 和系统升级使用的。
博主的crontab 是这样的:* * * * * /usr/bin/php /home/ThankIT/www/demo/M210/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /home/ThankIT/www/demo/M210/var/log/magento.cron.log * * * * * /usr/bin/php /home/ThankIT/www/demo/M210/update/cron.php >> /home/ThankIT/www/demo/M210/var/log/update.cron.log * * * * * /usr/bin/php /home/ThankIT/www/demo/M210/bin/magento setup:cron:run >> /var/www/magento2/var/log/setup.cron.log
- 怎么判断 cron job 成功运行了
判断方法应该有很多吧,其中博主认为比较简单的是去查看一下数据库的cron_schedule
表,如果有记录说明成功了。