Magento定时任务和cron_scheduler表

6
我制作了一个Magento模块,可以将产品导出为CSV文件。现在我想每天23:55运行cronjob。我按照magento cronjob wiki中所写的设置了config.xml。
我的代码:
<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执行。有什么建议吗?

你可能更有机会在http://magento.stackexchange.com/上获得帮助。 - Chris Bier
2个回答

7
尽管这是一个非常古老的问题,但是没有正确的答案发布,所以让我为下一个人留下这个问题。Magento的cron_schedule表只填充了计划在不久的将来运行的cron作业。您没有看到表中的cron作业的原因是它只在每天23:55准确地运行一次。大约在23:45左右,根据您的服务器cron作业配置以及Magento在系统 > 配置 > 系统 > Cron中的cron作业设置,Magento将添加此cron作业到cron_schedule表中。请注意生成计划时间提前安排时间设置,它们定义了Magento生成计划的频率和提前时间。

4

我的第一步将是安装Fabrizio Branca的AOE Scheduler extension。Fabrizio的扩展程序具有“List View”功能,可以显示Magento的cron当前注册的所有Cron作业以及其计划运行时间。它还允许您在浏览器中立即运行Cron作业(非常适合调试Cron作业),或者安排作业立即执行。

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

如果您的Cron作业出现在列表视图中仍然无法运行,请使用“Generate Schedule”功能重新生成Cron调度表。还可以尝试使用AOE Scheduler的“Run Now”功能手动运行Cron作业以检查错误或异常。


3
您无需安装完整模块。您可以将shell/scheduler.php脚本复制到您的安装的shell文件夹中。然后在命令行中运行它,即可获得所有功能。 - SPRBRN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接