Как настроить работу cron в модуле Magento?

Я хотел настроить работу cron внутри моего модуля. Я выполнил инструкции по Magento wiki – how_to_setup_a_cron_job , но мое задание cron просто не выполняется.

Это мой config.xml (app / code / local / Roomstory / Invoice / etc / config.xml)

<?xml version="1.0"?> <config> <modules> <Roomstory_Invoice> <version>0.1.1</version> </Roomstory_Invoice> </modules> <!-- --> <crontab> <jobs> <roomstoryinvoice_setstatus> <schedule><cron_expr>*/10 * * * *</cron_expr></schedule> <run><model>roomstory_invoice/setstatus::run</model></run> </roomstoryinvoice_setstatus> </jobs> </crontab> </config> 

И это мой класс. (Приложение / код / ​​местные / Roomstory / счета / модель / Setstatus.php)

 <?php class Roomstory_Invoice_Model_Setstatus { public function run() { return true; } } ?> 

Я установил Cron Scheduler Module, который показывает мое задание cron, но когда я пытаюсь «запустить сейчас» (для отладки), я получаю ошибку –

Недопустимый обратный вызов: roomstory_invoice / setstatus :: run не существует

Это что-то простое, после долгих попыток, я все еще не могу найти ошибку. Скажите, пожалуйста, другой способ сделать это или указать ошибку в этом коде.

Благодаря!

В ваших модулях config.xml введите следующее:

 <config> <global> <models> <roomstoryinvoicecron> <class>Roomstory_Invoice_Model</class> </roomstoryinvoicecron> </models> </global> <crontab> <jobs> <roomstoryinvoicecron> <schedule> <cron_expr>*/10 * * * *</cron_expr> </schedule> <run> <model>roomstoryinvoicecron/observer::setStatus</model> </run> </roomstoryinvoicecron> </jobs> </crontab> </config> 

В app/code/local/Roomstory/Invoice/Model/Observer.php добавьте следующее:

 <?php class Roomstory_Invoice_Model_Observer { public function setStatus() { Mage::log("WORKS!"); } } 

Убедитесь, что регистрация включена, и она должна работать, проверьте журнал, чтобы убедиться;)

Обязательно добавьте файл Magento cron.sh в crontab

 crontab -e */5 * * * * /bin/sh /path-to-magento/cron.sh 
  <crontab> <jobs> <CompanyName_ModuleName> <schedule> <cron_expr>*/5 * * * *</cron_expr> </schedule> <run> <model>ModuleName/observer::setStatus</model> </run> </CompanyName_ModuleName> </jobs> </crontab> 

и создайте файл Observer.php в модели с

  class CompanyName_ModuleName_Model_Observer extends Mage_Core_Model_Abstract { public function setStatus() { } } 

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

Создайте файл Config.xml и задайте в нем задание cron.

 <?xml version="1.0"?> <config> <crontab> <jobs> <Namespace_Module> <schedule> <cron_expr>* * * * *</cron_expr> </schedule> <run> <model>module/observer::method</model> </run> </Namespace_Module> </jobs> </crontab> </config> 

Ваш метод наблюдателя:

  class CompanyName_ModuleName_Model_Observer extends Mage_Core_Model_Abstract { public function setStatus() { //your action } } 

теперь последний шаг перейдите на ваш хостинг cpanel и установите путь и время выполнения файла cron.php в разделе задания cron

по умолчанию вы можете установить путь как php -f /home/mercodec/public_html/cron.php в php -f /home/mercodec/public_html/cron.php .

перед этим вы должны запустить этот скрипт в своем терминале. Для ubuntu: * / 1 * * * * / usr / bin / php /var/www/html/modulename/cron.php> / dev / null