2012-06-26 46 views
17

我想在我的模塊中設置一個cron作業。我遵循Magento wiki上的說明 - how_to_setup_a_cron_job,但我的cron作業完全沒有執行。如何在Magento模塊中設置cron作業?

這是我的config.xml(應用程序/代碼/本地/ Roomstory /發票的/ 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> 

這是我的班。

<?php 
class Roomstory_Invoice_Model_Setstatus { 

    public function run() { 
    return true; 
    } 

} 
?> 

我已經安裝了一個cron調度器模塊(應用程序/代碼/本地/ Roomstory /發票/型號/ Setstatus.php),這說明我的cron作業列出,但是當我嘗試「立即運行」(對於調試),我得到的錯誤 -

無效的回調:roomstory_invoice/setstatus ::運行不存在

這個簡單的東西,經過一番努力,我仍然無法找到的錯誤。請告訴其他方式,或者在此代碼中指出錯誤。

謝謝!

回答

33

在你的模塊​​3210把下面:

<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!"); 
    } 
} 

確保啓用了日誌記錄,它應該工作,檢查日誌,以確保;)

+0

我仍然得到相同的錯誤 - '無效回調:roomstoryinvoicecron /觀察者:: setStatus不exist' –

+0

我更新了config.xml文件,請再次嘗試;) – Kenny

+0

由於現在是工作! –

2
<crontab> 
     <jobs> 
      <CompanyName_ModuleName> 
       <schedule> 
        <cron_expr>*/5 * * * *</cron_expr> 
       </schedule> 
       <run> 
        <model>ModuleName/observer::setStatus</model> 
       </run> 
      </CompanyName_ModuleName> 
     </jobs> 
    </crontab> 

並在模型中創建Observer.php文件

class CompanyName_ModuleName_Model_Observer extends Mage_Core_Model_Abstract 
{ 

    public function setStatus() 
    { 

    } 
} 
7

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

crontab -e 

*/5 * * * * /bin/sh /path-to-magento/cron.sh 
1

您可以輕鬆創建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.php文件的時間cron作業部分

像magento中的php -f /home/mercodec/public_html/cron.php這樣的路徑。

0

之前,你必須在你的終端上運行此腳本。 對於Ubuntu:*/1 * * * */usr/bin/php /var/www/html/modulename/cron.php>/dev/null

+0

感謝您的回答 –