如何在Magento模块中设置cron作业?

Vin*_*arg 17 php xml magento

我想在我的模块中设置一个cron作业.我按照Magento wiki上的说明操作 - how_to_setup_a_cron_job,但我的cron作业根本没有执行.

这是我的config.xml(app/code/local/Roomstory/Invoice/etc/config.xml)

<?xml version="1.0"?>
<config>    
    <modules>
        <Roomstory_Invoice>
            <version>0.1.1</version>
        </Roomstory_Invoice>
    </modules>
<!-- -->
    <crontab>
        <jobs>
            <roomstoryinvoice_setstatus>
                <schedule><cron_expr>*/10 * * * *</cron_expr></schedule>
                <run><model>roomstory_invoice/setstatus::run</model></run>
            </roomstoryinvoice_setstatus>
        </jobs>
    </crontab>
</config>
Run Code Online (Sandbox Code Playgroud)

这是我的课.(应用程序/代码/本地/ Roomstory /发票/型号/ Setstatus.php)

<?php
class Roomstory_Invoice_Model_Setstatus {

  public function run() {
    return true;
  }

}
?>
Run Code Online (Sandbox Code Playgroud)

我已经安装了一个Cron Scheduler Module,它显示了我列出的cron作业,但当我尝试"立即运行"(用于调试)时,我收到错误 -

回调无效:roomstory_invoice/setstatus :: run不存在

这很简单,经过多次尝试,我仍然无法找到错误.请告诉其他一些方法,或在此代码中指出错误.

谢谢!

Ken*_*nny 34

在您的模块config.xml中添加以下内容:

<config>
    <global>
        <models>
            <roomstoryinvoicecron>
                <class>Roomstory_Invoice_Model</class>
            </roomstoryinvoicecron>                         
        </models>
    </global>
    <crontab>
        <jobs>
            <roomstoryinvoicecron>
                <schedule>
                    <cron_expr>*/10 * * * *</cron_expr>
                </schedule>
                <run>
                    <model>roomstoryinvoicecron/observer::setStatus</model>
                </run>
            </roomstoryinvoicecron>
        </jobs>
    </crontab>
</config>
Run Code Online (Sandbox Code Playgroud)

app/code/local/Roomstory/Invoice/Model/Observer.php添加以下内容:

<?php
class Roomstory_Invoice_Model_Observer {
    public function setStatus() {
        Mage::log("WORKS!");
    }
}
Run Code Online (Sandbox Code Playgroud)

确保日志已启用且应该可以正常运行,请检查日志以确保;)


小智 8

一定要在crontab中添加Magento cron.sh文件

crontab -e

*/5 * * * * /bin/sh /path-to-magento/cron.sh
Run Code Online (Sandbox Code Playgroud)