Как настроить работу cron в magento?

Я работаю над версией magento 1.7.0.2.

Я хочу отправить CSV по почте клиентам. Это нужно делать каждый месяц, используя cron job в magento.

Для задания cron 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>    

Наблюдатель.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

Любая помощь будет очень ценна.


person Neeraj Garg    schedule 17.05.2014    source источник
comment
Теперь моя работа указана в таблице cron_schedule, но все задания показывают статус ожидания и показывают время «создано в» и «запланировано в» в базе данных. Ожидание с последнего 1 часа, но время «выполняется в» показывает нуль.   -  person Neeraj Garg    schedule 21.05.2014
comment
Вы уверены, что код правильный??   -  person Meabed    schedule 21.05.2014
comment
Да, код правильный. Когда я установил расширение планировщика AOE и сгенерировал расписание, оно работает, но по умолчанию (каждые 15 минут) это не так :( Я запустил cron.php из браузера, но не повезло   -  person Neeraj Garg    schedule 21.05.2014
comment
Можете ли вы объяснить случай проблемы в деталях?   -  person Meabed    schedule 21.05.2014
comment
Задание cron не запускается автоматически на локальном хосте   -  person Neeraj Garg    schedule 21.05.2014
comment
Вы проверили файл журнала magento?   -  person Lalit Kaushik    schedule 21.05.2014
comment
Можете ли вы отправить электронную почту с вашего локального хоста? у вас включен и работает smtp?   -  person Meabed    schedule 21.05.2014
comment
magentocommerce.com/wiki/1_-_installation_and_configuration/   -  person Ravi Patel    schedule 21.05.2014
comment
Теперь, чтобы настроить Crontab в Magento, перейдите на вкладку «Администратор» => система => конфигурация => система => «Cron (запланированные задачи)».   -  person Ravi Patel    schedule 21.05.2014
comment
Я уже делаю это, см. мой вопрос   -  person Neeraj Garg    schedule 21.05.2014
comment
если вы хотите отправить почту на локальный хост для тестирования, убедитесь, что smtp работает на вашем локальном хосте.   -  person Lalit Kaushik    schedule 21.05.2014
comment
вы установили cron.php в свой crontab..вы можете проверить, используя crontab -l   -  person huzefam    schedule 30.05.2014


Ответы (3)


Если почтовая система работает нормально, но вы все еще сталкиваетесь с этой проблемой, попробуйте также:

замените код конфигурации следующим:

<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 = '[email protected]';
    $from_email_name = 'sendername';
    $to_email = '[email protected]';
    $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» в списке задач запланированных задач здесь: Система > Планировщик > Список. Убедитесь, что вы выполняете поиск со всеми запланированными задачами, я имею в виду также пейджинг;)

Надеюсь это поможет! Всего наилучшего!

person Lalit Kaushik    schedule 21.05.2014
comment
почтовая система работает нормально. Единственная проблема заключается в том, что cron не планирует автоматически на сервере. Мне нужно планировать и запускать все задания cron с помощью планировщика AOE. - person Neeraj Garg; 22.05.2014
comment
Вы настроили Cron на cPanel? - person Lalit Kaushik; 22.05.2014
comment
еще одна вещь, если crontab указан здесь: система › Планировщик › Конфигурация расписания, затем запланируйте эту задачу, выбрав действие Запланировать сейчас. - person Lalit Kaushik; 22.05.2014
comment
Да, я также говорю то же самое, что использование Schedule теперь работает. Но это должен быть автоматический запуск. Добавить что-нибудь для этого в c-panel? Как я могу добавить? Не могли бы вы объяснить? - person Neeraj Garg; 22.05.2014
comment
да, вам нужно установить cronjob в cpanel. см. эту magento.stackexchange.com/questions/8012 / - person Lalit Kaushik; 22.05.2014

Добрался до 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

person user3656133    schedule 21.05.2014
comment
Никогда не меняйте файлы ядра. - person Neeraj Garg; 27.05.2014

Весь код, который вы делаете, в порядке, вам просто нужно установить cron.php как задание cron на сервере.

person urfusion    schedule 23.05.2014
comment
Как я могу установить его на сервере? - person Neeraj Garg; 23.05.2014
comment
Пожалуйста, обратитесь к этому kayako.atlassian .net/wiki/display/DOCS/ - person urfusion; 23.05.2014
comment
Neeraj, то же самое, что я сказал вам здесь: «как настроить задание cron в magento»> stackoverflow.com/questions/23709781/ - person Lalit Kaushik; 26.05.2014