【问题标题】:magento cron job and cron_scheduler tablemagento cron 作业和 cron_scheduler 表
【发布时间】:2013-04-05 00:55:57
【问题描述】:

我制作了将产品导出到 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 执行。任何建议我做错了什么?

【问题讨论】:

标签: php xml magento cron


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 您不需要安装完整的模块。您可以将 shell/scheduler.php 脚本复制到安装的 shell 文件夹中。然后在命令行中运行它,你就会得到所有的功能。
    猜你喜欢
    • 1970-01-01
    • 2016-04-05
    • 2011-08-18
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多