我在Magento中安装的扩展之一是使用表达式0 0 4 1/1 * ? *
安排了一个cron。从我收集到的意味着它应该每天凌晨4点运行。
当Magento cron运行时,我收到错误报告:Invalid cron expression: 0 0 4 1/1 * ? *
。我无法找到有关Magento crons有效格式的任何信息。它们应该只有5个字段吗?
答案 0 :(得分:2)
Magento 1中的cron表达式可以有五到六列(字段)。列分隔符是空格。
如果列少于五列或多于六列,您将获得 Mage_Cron_Exception ,并显示消息"无效的cron表达式:< expression>&# 34; 其中< expression> 被替换为正在解析的配置选项的逐字字符串值。这是您在问题中的确切异常消息。
如果解析到正确数量的列的基本空白区域失败,或者任何列无法解析为以下任何一个cron,则会给出此最通用的 Mage_Cron_Exception 消息表达式:
*
- 全部匹配...,...
- 多个选项(每个逗号分隔必须再次验证)...\...
- 模数(两个元素,第二个必须是数字)...-...
- 数字数据的范围(从 - 到),月份和工作日名称的三个字母英文缩写被翻译成数字对应物(使用" mon"月份将导致1(1月)," sun"月份为0(未定义但无效)等。)。如果在任何这些(或多个选项的情况下,任何子选项)导致一些解析问题, 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 * * *