How to setup a cron job in Magento module?

前端 未结 5 994
温柔的废话
温柔的废话 2020-12-01 09:45

I wanted to setup a cron job inside my module. I followed the instructions on Magento wiki - how_to_setup_a_cron_job, but my cron job is simply not executing.

This i

相关标签:
5条回答
  • 2020-12-01 10:14

    before that you have to run this script in your terminal. For ubuntu:*/1 * * * * /usr/bin/php /var/www/html/modulename/cron.php > /dev/null

    0 讨论(0)
  • 2020-12-01 10:15

    In your modules config.xml put the following:

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

    In app/code/local/Roomstory/Invoice/Model/Observer.php add the following:

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

    Make sure logging is enabled and it should work, check the log to be sure ;)

    0 讨论(0)
  • 2020-12-01 10:20

    You can easily create a module for cron job just follow the following steps:

    Create Config.xml file and set cron job in it.

    <?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>
    

    Your observer method:

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

    now last step go to your hosting cpanel and set path and run time of cron.php file in cron job section

    by default you can set path like php -f /home/mercodec/public_html/cron.php in magento.

    0 讨论(0)
  • 2020-12-01 10:26
     <crontab>
            <jobs>
                <CompanyName_ModuleName>
                    <schedule>
                        <cron_expr>*/5 * * * *</cron_expr>
                    </schedule>
                    <run>
                        <model>ModuleName/observer::setStatus</model>
                    </run>
                </CompanyName_ModuleName>
            </jobs>
        </crontab>
    

    and create Observer.php file in Model with

        class CompanyName_ModuleName_Model_Observer extends Mage_Core_Model_Abstract
    {
    
       public function setStatus()
       { 
    
       }
    }
    
    0 讨论(0)
  • 2020-12-01 10:28

    Be sure to add Magento cron.sh file in crontab

    crontab -e
    
    */5 * * * * /bin/sh /path-to-magento/cron.sh
    
    0 讨论(0)
提交回复
热议问题