Magento Cron Job 意外行为

标签 magento cron magento-1.7

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

1) 水仙花/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 预期输出应该是
你好
但目前的输出是有时间
你好你好

还有一些时间
你好你好你好你好

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

最佳答案

我认为这是因为你的 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

关于Magento Cron Job 意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13985250/

相关文章:

html - Magento 开发 - 修改导航过滤器上的图像链接

magento - 如何为自定义属性类型选择创建自定义源模型?

php - 如何使用 YouTube Data API v3 检查 YouTube 视频是否存在

python - 重启 Wsgi 服务器时重启 ApScheduler Python 中的作业

magento - fatal error : Call to a member function toOptionArray() on a non-object in Magento admin

mysql - 在magento模块中创建表

php - Magento 升级,层级价格从 1.4.0.2 到 1.7.0.2 出现错误

javascript - jQuery.noConflict(); 的作用是什么? jquery-1.4.2.min.js 结尾是什么意思?

mysql - Magento 搜索未显示相关结果

linux - 作为 cron 作业运行无法获得输出