crontab java job_cron job (crontab)

Cron job的时间格式 :* * * * *  分别对应 分、小时、日、月、星期

所以 */5 * * * * 表示5分钟

计划任务(cron job)是Magento系统中一个很有用甚至可以说必须使用的功能,而最近在网上跟人聊天发现很多Magento的使用者不知道这个功能或者知道却认为可有可无,我在这里建议各位Magento的使用者,把这个功能使用起来吧。

在之前关于Newsletter的那篇博文我有讲到,要使新闻能按设定的时间自动发送,就必须设置好计划任务(cron job)。计划任务(cron job)简单的来说就是在系统中每隔一段时间来重复操作一件事,比如每隔多少时间清理日志,比如每天提交Sitemap给google等等。

而要设置计划任务(cron job),需要在网站运行的服务器(以linux为例)写一段脚本来定时调用网站根目录下的cron.php文件。下面是我自己使用的服务器的设置方式:

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

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

1613619

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

1. 

2.         

3.             

4.                 

5.                     sitemap/observer::scheduledGenerateSitemaps

6.                 

7.             

8.         

9.     

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

这里我们再来了解一下 cron job 中的定时器语法

标签中的 5 颗 * 分别代表:

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

# — 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]

* * * * * [command]

or

*/1 * * * * [command]

or

0-59 * * * * [command]

下面的计划任务会在每个小时的0分时运行(就是每小时执行一次)

0 * * * * [command]

0 * * * * [command]

下面依旧是一个每小时运行一次的计划任务。不过是在每个小时的一刻钟时运行的(1:15,2:15 …以此类推)

15 * * * * [command]

15 * * * * [command]

下面的计划任务每天执行一次,在2:30分

30 2 * * * [command]

30 2 * * * [command]

下面的计划任务是在每个月2号的午夜执行(比如:2013-01-02 00:00, 2013-02-02 00:00 …以此类推)

0 0 2 * * [command]

0 0 2 * * [command]

下面的计划任务会在每周一的每个小时0分钟时执行一次

0 * * * 1 [command]

0 * * * 1 [command]

下面的会每小时运行3次,在0分,10分,和20分时

0,10,20 * * * * [command]

0,10,20 * * * * [command]

下面是用除号 / 表示每多少运行一次。本例是每5分钟运行一次

*/5 * * * * [command]

*/5 * * * * [command]

还可以用 – 表示一个范围,如下表示5到10点的每个整点运行一次

0 5-10 * * * [command]

0 5-10 * * * [command]

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * 1-3 [command]

0 11 4 * 1-3 [command]

晚上11点到早上8点之间每两个小时,早上八点

0 23-7/2,8 * * * [command]

0 23-7/2,8 * * * [command]

另外还有一个特殊的时间关键字“@reboot”,就是每次重启服务器时运行计划任务

@reboot [command]

@reboot [command]

关于 Cron 的一些知识 – 使用PHP解析器

CGI脚本默认是可以执行的,但是php脚本不行,他们需要用php解析器来运行,这就是我们要把php解析器的路径放到php脚本前的原因。

注释使用#字符。例如:

# This cron job does something very important 10 * * * * /usr/bin/php /www/virtual/username/cron.php > /dev/null 2>&1

# This cron job does something very important

10 * * * * /usr/bin/php /www/virtual/username/cron.php > /dev/null 2>&1

设定E-mail

MAILTO="shawn0828@hotmail.com" # This cron job does something very important 10 * * * * /usr/bin/php /www/virtual/username/cron.php > /dev/null 2>&1

MAILTO="shawn0828@hotmail.com"

# This cron job does something very important

10 * * * * /usr/bin/php /www/virtual/username/cron.php > /dev/null 2>&1

有时候php解析器可能在这里”/usr/local/bin/php”。我们可以用下面的命令找到正确的路径:

在终端中输入: which php

系统反馈: /usr/bin/php

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值