如何通过cron直接在控制器类中运行一个函数?

时间:2011-03-24 23:32:58

标签: magento crontab

在magento中,我尝试按照以下方式设置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函数而不是模型。

请帮帮我

2 个答案:

答案 0 :(得分: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类的内容。

如果你只在cron模型中调用一次sendAction,那就没问题......

但我建议使用cron本身,因为它更有效,而不是多次使用Curl。

答案 1 :(得分:2)

你做错了:)如果你需要调用一个带有所有调度程序和事件的控制器你应该使用wget或curl来调用你的行动。如果您不需要所有事件和调度员,那么您的方法就在错误的地方