2012-06-26 7 views
17

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

Это мой config.xml (приложение/код/​​местные/Roomstory/счета/и т.д./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, который показывает мои хроны в списке, но когда я пытаюсь «запустить сейчас» (для отладка), я получаю ошибку -

Invalid обратного вызова: roomstory_invoice/setstatus :: пробег не существует

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

Спасибо!

ответ

33

В ваших модулей 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!"); 
    } 
} 

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

+0

Я по-прежнему получаю ту же ошибку: «Неверный обратный вызов: roomstoryinvoicecron/observer :: setStatus не существует' –

+0

Я обновил config.xml, повторите попытку;) – Kenny

+0

Спасибо, сейчас работает! –

2
<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() 
    { 

    } 
} 
7

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

crontab -e 

*/5 * * * * /bin/sh /path-to-magento/cron.sh 
1

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

Создать файл 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 файла в хрон разделе работы

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

0

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

+0

Спасибо за ваш ответ –

Смежные вопросы