[英]How to setup a cron job in Magento module?
我想在模块中设置一个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>
这是我的课。 (应用程序/代码/本地/ Roomstory /发票/模型/Setstatus.php)
<?php
class Roomstory_Invoice_Model_Setstatus {
public function run() {
return true;
}
}
?>
我已经安装了Cron Scheduler Module,该模块显示了我的cron作业,但是当我尝试“立即运行”(用于调试)时,出现错误-
无效的回调:roomstory_invoice / setstatus :: run不存在
这很简单,经过大量尝试,我仍然找不到错误。 请告诉其他方法,或者在此代码中指出错误。
谢谢!
在您的模块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>
在app/code/local/Roomstory/Invoice/Model/Observer.php
添加以下内容:
<?php
class Roomstory_Invoice_Model_Observer {
public function setStatus() {
Mage::log("WORKS!");
}
}
确保启用了日志记录,并且应该可以正常工作,请检查日志以确保;)
确保在crontab中添加Magento cron.sh文件
crontab -e
*/5 * * * * /bin/sh /path-to-magento/cron.sh
<crontab>
<jobs>
<CompanyName_ModuleName>
<schedule>
<cron_expr>*/5 * * * *</cron_expr>
</schedule>
<run>
<model>ModuleName/observer::setStatus</model>
</run>
</CompanyName_ModuleName>
</jobs>
</crontab>
并在Model中创建Observer.php文件
class CompanyName_ModuleName_Model_Observer extends Mage_Core_Model_Abstract
{
public function setStatus()
{
}
}
您只需按照以下步骤即可轻松地为cron作业创建模块:
创建Config.xml文件并在其中设置cron作业。
<?xml version="1.0"?>
<config>
<crontab>
<jobs>
<Namespace_Module>
<schedule>
<cron_expr>* * * * *</cron_expr>
</schedule>
<run>
<model>module/observer::method</model>
</run>
</Namespace_Module>
</jobs>
</crontab>
</config>
您的观察者方法:
class CompanyName_ModuleName_Model_Observer extends Mage_Core_Model_Abstract
{
public function setStatus()
{
//your action
}
}
现在,最后一步转到您的托管cpanel,并在cron作业部分中设置cron.php文件的路径和运行时间
默认情况下,您可以在magento中设置类似php -f /home/mercodec/public_html/cron.php
路径。
在此之前,您必须在终端中运行此脚本。 对于ubuntu:* / 1 * * * * / usr / bin / php /var/www/html/modulename/cron.php> / dev / null
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.