如何在magento中设置cron作业?

时间:2014-05-17 09:35:08

标签: magento magento-1.7 crontab email-attachments

我正在研究magento 1.7.0.2版本。

我想将邮件中的csv发送给客户。 这应该每月使用magento中的cron作业完成。

对于cron job config.xml

<crontab>
    <jobs>
        <Module_Store>
            <schedule><cron_expr>0,15,30,45 * * * *</cron_expr></schedule>
            <run><model>clinic/observer::sendMailtoClinic</model></run>
        </Module_Store>
    </jobs>
</crontab>    

Observer.php

class Module_Store_Model_Observer {

  public function sendMailtoClinic(Varien_Event_Observer $observer, $content){                        
    $mail = new Zend_Mail();
    $mail->setType(Zend_Mime::MULTIPART_RELATED);
    $mail->setBodyHtml($html_body);
    $mail->setFrom($from_email, $from_email_name);
    $mail->addTo($to_email, $toEmailName);
    $mail->setSubject($subject);
    $file = $mail->createAttachment(file_get_contents($file_path));
    $file->type = 'text/csv';
    $file->disposition = Zend_Mime::DISPOSITION_INLINE;
    $file->encoding = Zend_Mime::ENCODING_BASE64;
    $file->filename = $file_name;
    $mail->send();
  }
}

cron的管理员配置是: -

Generate Schedules Every 15
Schedule Ahead for 15
Missed if Not Run Within 35
History Cleanup Every 15
Success History Lifetime 10
Failure History Lifetime 600

任何帮助都会非常明显。

3 个答案:

答案 0 :(得分:5)

如果邮件系统工作正常并且你仍然遇到问题,那么也试试这个:

用以下代码替换您的配置代码:

<crontab>
    <jobs>
        <clinic_cron>
            <schedule><cron_expr>0,15,30,45 * * * *</cron_expr></schedule>
            <run><model>clinic/observer::sendMailtoClinic</model></run>
        </clinic_cron>
    </jobs>
</crontab> 


class [Packagename]_Clinic_Model_Observer { // don't forget to mention package name

  public function sendMailtoClinic(Varien_Event_Observer $observer){                        

    $html_body = 'this is html body text';
    $from_email = 'from_email@domain.com';
    $from_email_name = 'sendername';
    $to_email = 'to_email@domain.com';
    $toEmailName = 'receiverName';
    $subject = 'subject text here';
    $file_path = 'here/is/file/path';
    $file_name = 'filename.csv';

    $mail = new Zend_Mail();
    $mail->setType(Zend_Mime::MULTIPART_RELATED);
    $mail->setBodyHtml($html_body);
    $mail->setFrom($from_email, $from_email_name);
    $mail->addTo($to_email, $toEmailName);
    $mail->setSubject($subject);
    $file = $mail->createAttachment(file_get_contents($file_path));
    $file->type = 'text/csv';
    $file->disposition = Zend_Mime::DISPOSITION_INLINE;
    $file->encoding = Zend_Mime::ENCODING_BASE64;
    $file->filename = $file_name;
    $mail->send();
  }
}

在此处的计划任务任务列表中搜索“clinic_cron”一词:系统&gt;调度程序&gt;列表显示。确保您正在搜索所有计划任务,我的意思是看到分页;)

希望这有帮助!一切顺利!

答案 1 :(得分:3)

获得app / code / core / Mage / CatalogRule / etc / config.xml

和put

   <config>
     ...
   <crontab>
    <jobs>
    <catalogrule_apply_all>
        <schedule><cron_expr>0 1 * * *</cron_expr></schedule>
        <run><model>catalogrule/observer::dailyCatalogUpdate</model></run>
    </catalogrule_apply_all>
  </jobs>
    ...
 </crontab>
   ...
  </config>

您可以根据需要更改时间表,请参阅http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/how_to_setup_a_cron_job

答案 2 :(得分:3)

你做的所有代码都很好,你只需要将cron.php设置为服务器上的cron作业。