如何在Magento中设置定时任务?

3

我正在使用Magento 1.7.0.2版本。

我想通过邮件向客户发送CSV文件。 这应该通过Magento中的cron job每个月完成。

对于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

任何帮助都将非常感激。

现在我的工作已经列在cron_schedule表中,但是所有的工作都显示为挂起状态,并且在数据库中显示“创建于”和“计划于”的时间。已经等待了1个小时,但“执行于”的时间显示为空。 - Neeraj Garg
你确定代码正确吗? - Meabed
是的,代码是正确的。当我安装了AOE调度程序扩展并生成计划后,它可以工作,但默认情况下(每15分钟)它不起作用:( 我从浏览器运行cron.php但没有成功。 - Neeraj Garg
你能详细解释一下这个问题的情况吗? - Meabed
本地主机上的定时任务未能自动运行。 - Neeraj Garg
显示剩余7条评论
3个回答

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”这个词。确保您搜索了所有的计划任务,也就是要看分页哦 ;)

希望这可以帮到您!祝一切顺利!


邮件系统运行良好,唯一的问题是服务器上的定时任务未能自动调度。我需要使用AOE调度程序调度和运行所有cron作业。 - Neeraj Garg
你在cPanel上设置了定时任务吗? - Lalit Kaushik
还有一件事,如果crontab在这里列出了系统 > 调度程序 > 调度配置,则通过选择动作“立即调度”来安排该任务的计划。 - Lalit Kaushik
是的,我也在说同样的事情,使用“立即安排”它可以工作。但它应该是自动启动的。 我需要在 c-panel 中添加什么吗?我该如何添加?你能解释一下吗? - Neeraj Garg
1
是的,您需要在cPanel中设置cronjob。请参考此链接:http://magento.stackexchange.com/questions/8012/cron-job-command-in-cpanel - Lalit Kaushik

3

请前往app/code/core/Mage/CatalogRule/etc/config.xml文件

然后输入以下内容:

   <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
永远不要更改核心文件。 - Neeraj Garg

3

你的代码没问题,你只需要将cron.php设置为服务器上的定时任务即可。


我该如何在服务器上设置它? - Neeraj Garg
2
请参考以下链接: https://kayako.atlassian.net/wiki/display/DOCS/Setting+up+a+server+cron+or+scheduled+task - urfusion
1
Neeraj,我在这里告诉过你同样的事情:https://dev59.com/H3_aa4cB1Zd3GeqP7sY9#23781591?noredirect=1#comment36612325_23781591 - Lalit Kaushik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接