【问题标题】:Magento Cron Job unexpected behaviorMagento Cron Job 意外行为
【发布时间】:2012-12-21 22:40:53
【问题描述】:

我正在开发一个自定义 Magento 模块并为其设置一个 Cron 作业。 一切正常,但我担心 Cron 作业的意外行为(随机执行次数)。 当我手动执行 cron.php 时,它会调用我模块的观察者方法超过 1 次(执行次数不固定,有时 3 次有时 5 次等)。
我只想执行一次观察者的方法。
这是我的代码。

1) Daffodil/Birthdaywish/etc/config.xml

...
 ...
 <crontab>
        <jobs>
            <daffodil_birthdaywish>
                <schedule>
                    <cron_expr>* * * * * *</cron_expr>
                </schedule>
                <run>
                    <model>birthdaywish/observe::sendBirthdayMail</model>
                </run>
            </daffodil_birthdaywish>
        </jobs>
 </crontab>
 ...

2) Daffodil/Birthdaywish/Model/observe.php

Class Daffodil_Birthdaywish_Model_Observe {

    public function sendBirthdayMail() {

         echo "<h1>Hello</h1>";

    }

}

如果我执行 cron.php,预期的输出应该是
Hello
但是当前的输出是一段时间
Hello Hello Hello

还有一段时间
Hello Hello Hello Hello Hello

我只想知道为什么观察者的方法执行次数(随机次数)?
有什么方法可以将预定 cron 的状态更改为“COMPLETE”,这样它就不会执行两次?

【问题讨论】:

    标签: magento cron crontab magento-1.7


    【解决方案1】:

    我认为这是因为你的 cron 计划:

        <schedule>
            <cron_expr>* * * * * *</cron_expr>
        </schedule>
    

    您指定 cron 应该一直运行。 Magento 的 cron.php 只是收集所有 cron 作业的所有信息,并将它们安排在 Magento 数据库的 cron_schedule 表中。

    应该一直调用 cron.php,它管理所有其他的 cronjobs。

    因此,例如,如果您将 cronjob 设置为每小时运行一次并定期调用 cron.php,那么它每小时只会运行一次。

    你会这样做:

        <schedule>
            <cron_expr>0 * * * *</cron_expr>
        </schedule>
    

    所以它每小时在 0 分钟运行一次(5 点钟、6 点钟等)。

    也可以看看这里:http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/how_to_setup_a_cron_job

    【讨论】:

    • 我认为这个解决方案会奏效。因为当您的 cron 表达式是 * * * * * * 时,这意味着将每秒运行一次。这取决于您运行的服务器。
    猜你喜欢
    • 2023-03-18
    • 2016-04-25
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多