我想在我的模块中设置一个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)