magento cron job

计划任务(cron job)简单的来说就是在系统中每隔一段时间来重复操作一件事,比如每隔多少时间清理日志,比如每天提交Sitemap给google等,最主要的应该还是Newsletter,而要设置计划任务(cron job),需要在网站运行的服务器(以linux为例)写一段脚本来定时调用网站根目录下的cron.php

[php]crontab */5 * * * * /usr/bin/php -f /home/yourdomainname/public_html/cron.php[/php]

标签中的 5 颗 * 分别代表:
# — M: 分钟 (0 - 59)
# | — H:小时 (0 - 23)
# | | — D:一个月的哪一天 (1 - 31)
# | | | — M: 一年中的哪个月 (1 - 12)
# | | | | — 星期几(0 - 7) (星期日 = 0或7)
# | | | | |
# * * * * * 被执行的命令

另外还有几个特殊的符号就是 "*" | "/" | "-" | ","
星号 ('*') 代表任何可能的值。例如,在“小时域” 里的星号等于是“每一个小时”
斜线 ('/') 用于表示跳过某些给定的数。例如,“*/3”在小时域中等于“0,3,6,9,12,15,18,21”等被3整除的数
连词符 ('-') 制定值的范围,例如:“1-6”,意思等同于“1,2,3,4,5,6”
逗号 (',') 分开的值,例如:“1,3,4,7,8”

示例:

下面的计划任务会每一分钟执行
* * * * * [command]
or
*/1 * * * * [command]
or
0-59 * * * * [command]

下面的计划任务会在每个小时的0分时运行(就是每小时执行一次)
0 * * * * [command]
下面依旧是一个每小时运行一次的计划任务。不过是在每个小时的一刻钟时运行的(1:15,2:15 ...以此类推)
15 * * * * [command]
下面的计划任务每天执行一次,在2:30分
30 2 * * * [command]
下面的计划任务是在每个月2号的午夜执行(比如:2013-01-02 00:00, 2013-02-02 00:00 ...以此类推)
0 0 2 * * [command]
下面的计划任务会在每周一的每个小时0分钟时执行一次
0 * * * 1 [command]
下面的会每小时运行3次,在0分,10分,和20分时
0,10,20 * * * * [command]
下面是用除号 / 表示每多少运行一次。本例是每5分钟运行一次
*/5 * * * * [command]
还可以用 - 表示一个范围,如下表示5到10点的每个整点运行一次
0 5-10 * * * [command]
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3 [command]
晚上11点到早上8点之间每两个小时,早上八点
0 23-7/2,8 * * * [command]
另外还有一个特殊的时间关键字“@reboot”,就是每次重启服务器时运行计划任务
@reboot [command]

有时候php解析器可能在这里”/usr/local/bin/php”。我们可以用下面的命令找到正确的路径:
在终端中输入: which php
系统反馈: /usr/bin/php

首先你的服务器得支持cron job你才能使用crontab 这个命令,设置完的效果是服务器每隔5分钟运行一次你的网站根目录下的cron.php文件,cron.php运行时会去检查计划任务时间表中哪些任务的预定时间已经到了,如果到了就立即执行预定的任务,比如提交sitemap,并同时根据各个任务的配置文件或预先设定的任务(特指newsletter)生成新的计划任务时间表。储存这些数据的是数据库中的cron_schedule表,进这个表你会看到一个计划任务的列表

要让某个功能按时运行需要在对应的config.xml中设置计划任务,指定要运行的某个类的某个方法,同样以google sitemap为例

[xml]
 <crontab>
        <jobs>
            <sitemap_generate>
                <run>
                    <model>sitemap/observer::scheduledGenerateSitemaps</model>
                </run>
            </sitemap_generate>
        </jobs>
</crontab>
[/xml]

你可以在Sitemap/Model/Observer.php文件中找到scheduledGenerateSitemaps这个方法,这个方法的作用就是向google提交sitemap。同理当你自己的模块有需要定时运行的功能是,可以参照sitemap在自己的config.xml配置要执行的方法

以1.4为例,Magento自带的计划任务包括刷新分类索引,应用价格规则,更新汇率,清理日志,发送Newsletter,发送商品提醒(价格变动和库存变化)和提交google sitemap等等,需要从后台配置中设置开启

你可能感兴趣的:(Magento,magento教程)