Я хотел настроить работу 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