Magento 无效的 cron 表达式

Magento invalid cron expression

我在 Magento 中安装的一个扩展有一个用表达式 0 0 4 1/1 * ? * 安排的 cron。根据我收集到的信息,它应该 运行 每天凌晨 4 点。

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

默认情况下,Magento 使用 SimpleTrigger format (the one with 5 fields), however your cron here is in CronTrigger 格式。

我不是 cron 方面的专家,但我认为你的 cron 正在将每天的时间表设置为 运行 凌晨 4 点(检查一下 here); Just try to restyle it in the SimpleTrigger format 它将是:

0 4 * * *

Magento 1 中的 cron 表达式可以有五个或六个列(字段)。列分隔符为白色-space.

如果少于五列或多于六列,您将得到一个 Mage_Cron_Exception 消息 "Invalid cron expression: <expression>" 其中 替换为正在解析的配置选项的逐字字符串值。这正是您在问题中遇到的异常消息。

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

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

如果其中任何一个(或者在多个选项的情况下,任何子选项)导致某些解析问题,Mage_Cron_Exception消息 "Invalid cron expression" 后缀为附加信息,例如:

  • ",期望 'from-to' 结构:<表达式>"

  • ",期望 'match/modulus':<表达式>"

  • ",期望数值模数:<表达式>"

  • ...等等

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) 的子集。第六个字段(年份)可以设置但永远不会被考虑。