2011-03-24 35 views
1

在magento我試圖設置cron如下。如何通過cron直接在控制器類中運行一個函數?

<crontab>  
      <jobs> 
       <inchoo_birthday_send> 
        <schedule><cron_expr>0 1 * * *</cron_expr></schedule> 
       </inchoo_birthday_send> 
      </jobs> 
    </crontab> 

在這裏它調用模型,但我怎麼可以直接調用控制器內的函數。例如

class Mage_Adminhtml_Inchoo_BirthdayController extends Mage_Adminhtml_Controller_Action 
{ 


    public function sendAction($strFname) 
    { 
     // this has to be called from cron in magento. 
    } 


} 

如何可以直接調用從cron上述控制器內的sendAction行動功能。換句話說,這個sendAction是如何直接從cron啓動的。我必須直接運行conroller函數而不是模型。

請幫我

回答

4

你應該把這個類作爲普通模型。

$observer = Mage::getModel('birthday/observer'); 
$observer->sendBirthayEmail(); 

希望這是你所需要的。

編輯

$curl = new Varien_Http_Adapter_Curl(); 
$curl->setConfig(array('timeout' => 20)); 
$curl->write(Zend_Http_Client::GET, 'http://www.stackoverflow.com'); 
$curl->read(); //or without this line 

這應該做的伎倆,如果你想了解更多信息,請參閱Varien_Http_Adapter_Curl類的內容。

如果你只會調用一次sendAction cron的模型中,那麼它的確定...

但我建議使用cron本身,因爲它是更有效,而不是使用捲曲多次。

+0

嗨,請檢查我更新的問題。確切地說,這是我必須做的。每天必須運行控制器功能(它每天生成1000個pdf的日期)。請幫幫我 – Elamurugan 2011-03-29 05:47:00

2

你做錯了:)如果你需要調用一個控制器的所有調度和事件,你應該使用wget或捲曲打電話給你的行動。如果你不需要所有的事件和調度員發射然後你的方法只是在錯誤的地方

+0

如果是這樣,那麼我應該使用curl登錄到管理員,然後調用確切的URL。這是做這件事的正確方法嗎? – Elamurugan 2011-03-25 12:20:15

+0

不,我想這種方法來阻止或模型將是一噸更容易處理 – 2011-03-25 14:07:26

+0

嗨,請檢查我更新的問題。確切地說,這是我必須做的。每天必須運行控制器功能(它每天生成1000個pdf的日期)。請幫助我 – Elamurugan 2011-03-29 05:47:56

相關問題