6

我制作了在 csv 文件中导出产品的 magento 模块。现在我想每天在 23.55 运行 cronjob。我设置了 config.xml,因为它是用magento cronjob wiki编写的。

我的代码:

<crontab>
        <jobs>
            <gcompany_runprofilescronjob>
                <schedule>
                    <cron_expr>55 23 * * *</cron_expr>
                </schedule>
                <run>
                    <model>export/export_csv::runprofilescronjob</model>
                </run>
            </gcompany_runprofilescronjob>
        </jobs>
    </crontab> 

我还在服务器上设置了 cronjob。当 cronjob 运行时,magento 中的所有 cronjobs 都存储在数据库表 cron_schedule 中,但不是我的 gcompany_runprofilescronjob。如果我设置不同的间隔,例如:

<cron_expr>*/1 * * * *</cron_expr>

我的 cronjob 是写在数据库中的,但是每分钟都在执行,这是我不想要的……我希望我的函数每天在 23.55 执行。有什么建议我做错了吗?

4

2 回答 2

7

虽然这是一个非常古老的问题,但没有发布正确的答案,所以让我把这个留给下一个人。

Magento 的cron_schedule表只填充了计划在不久的将来运行的 cron 作业。您没有在表中看到您的 cron 作业的原因是它每天只运行一次,恰好在 23:55。Magento 将cron_schedule在 23:45 左右将此 cron 作业添加到表中,具体取决于您的服务器 cron 作业配置和 Magento 在System > Configuration > System > Cron. 记下Generate Schedules EverySchedule Ahead for设置,它们定义了 Magento 生成时间表的频率和距离。

于 2015-01-14T21:57:38.653 回答
4

我的第一步是安装 Fabrizio Branca 的AOE Scheduler 扩展。Fabrizio 的扩展有一个“列表视图”功能,它将向您显示当前在 Magento 的 cron 中注册的所有 Cron 作业,以及它们计划运行的时间。它还允许您在浏览器中立即运行 cron 作业(非常适合调试 cron 作业),或安排该作业立即执行。

如果您的 cron 作业未出现在 AOE 调度程序的列表视图中,则说明 cron 作业的配置存在问题。尝试清除配置缓存以确保 Magento 将解析您的 config.xml 以获取最新更改。我假设您的 XML 节点位于 XML 文档层次结构中的适当位置,即直接在<config>节点下方?

如果您的 cron 作业出现在列表视图中但仍未运行,请使用“生成计划”功能重新生成 cron 计划表。还可以尝试使用 AOE 调度程序的“立即运行”功能手动运行您的 cron 作业,以检查错误或异常。

于 2013-04-12T13:33:19.057 回答