在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函数而不是模型。
请帮帮我
答案 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来调用你的行动。如果您不需要所有事件和调度员,那么您的方法就在错误的地方