Magento无效的cron表达式

时间:2015-05-13 20:23:45

标签: magento cron

我在Magento中安装的扩展之一是使用表达式0 0 4 1/1 * ? *安排了一个cron。从我收集到的意味着它应该每天凌晨4点运行。

当Magento cron运行时,我收到错误报告:Invalid cron expression: 0 0 4 1/1 * ? *。我无法找到有关Magento crons有效格式的任何信息。它们应该只有5个字段吗?

2 个答案:

答案 0 :(得分:2)

Magento 1中的cron表达式可以有五到六列(字段)。列分隔符是空格。

如果列少于五列或多于六列,您将获得 Mage_Cron_Exception ,并显示消息"无效的cron表达式:< expression>&# 34; 其中< expression> 被替换为正在解析的配置选项的逐字字符串值。这是您在问题中的确切异常消息。

如果解析到正确数量的列的基本空白区域失败,或者任何列无法解析为以下任何一个cron,则会给出此最通用的 Mage_Cron_Exception 消息表达式:

  • * - 全部匹配
  • ...,... - 多个选项(每个逗号分隔必须再次验证)
  • ...\... - 模数(两个元素,第二个必须是数字)
  • ...-... - 数字数据的范围(从 - 到),月份和工作日名称的三个字母英文缩写被翻译成数字对应物(使用" mon"月份将导致1(1月)," sun"月份为0(未定义但无效)等。)。
  • 数字缩写 - 只是一个数字值或三个字母的工作日或月份缩写(不区分大小写,前三个字母计数,例如&# 34; MaYbE" 将作为" may" 进行哈希处理,从而查找数字5(5)。)

如果在任何这些(或多个选项的情况下,任何子选项)导致一些解析问题, Mage_Cron_Exception 与消息"无效cron表达式" 后缀为其他信息,如:

  • ",期待'从 - 到'结构:<表达>"

  • ",期待'匹配/模数':<表达>"

  • ",期待数字模数:< expression>"

  • ......等等

Cron表达式解析在 Mage_Cron_Model_Schedule::getCronExprArr() Mage_Cron_Model_Schedule::matchCronExpression() 中完成。

0 0 4 1/1 * ? *

在你的情况下,cron表达式具有正确数量的字段(六个),但值为" ?"你没有在Magento cron表达式中解析第五列,导致通用消息(因为它没有被识别为任何字段值格式)。

格式是CRON expression (as given per Wikipedia)的子集。第六个字段(年份)可以设置但不会被考虑在内。

答案 1 :(得分:0)

默认情况下,Magento使用SimpleTrigger格式(包含5个字段的格式),但此处的cron格式为CronTrigger

我不是cron的专家,但我认为你的cron正设定每日凌晨4点运行(查看here);试着在SimpleTrigger format中重新设置它:

0 4 * * *