wake-up-neo.com

Wie richte ich einen Cron Job im Magento Modul ein?

Ich wollte einen Cron-Job in meinem Modul einrichten. Ich habe die Anweisungen in Magento wiki - how_to_setup_a_cron_job befolgt, aber mein Cron-Job wird einfach nicht ausgeführt.

Dies ist meine 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>

Und das ist meine Klasse. (app/code/local/Roomstory/Invoice/Model/Setstatus.php)

<?php
class Roomstory_Invoice_Model_Setstatus {

  public function run() {
    return true;
  }

}
?>

Ich habe ein Cron Scheduler-Modul installiert, in dem mein Cron-Job aufgelistet ist, aber wenn ich versuche, "jetzt auszuführen" (zum Debuggen), erhalte ich folgende Fehlermeldung:

Ungültiger Rückruf: roomstory_invoice/setstatus :: run existiert nicht

Dies ist etwas Einfaches, nach langem Bemühen kann ich den Fehler immer noch nicht finden. Bitte geben Sie einen anderen Weg an, oder geben Sie den Fehler in diesem Code an.

Vielen Dank!

17
Vinayak Garg

Fügen Sie in Ihre Module config.xml Folgendes ein:

<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 fügen Sie Folgendes hinzu:

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

Stellen Sie sicher, dass die Protokollierung aktiviert ist und funktionieren sollte. Überprüfen Sie das Protokoll, um sicherzugehen;)

34
Kenny

Fügen Sie die Magento-Datei cron.sh in crontab hinzu 

crontab -e

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

und erstellen Sie die Datei Observer.php in Model with

    class CompanyName_ModuleName_Model_Observer extends Mage_Core_Model_Abstract
{

   public function setStatus()
   { 

   }
}
2
Naresh Tank

Sie können ganz einfach ein Modul für Cron-Jobs erstellen, indem Sie die folgenden Schritte ausführen:

Erstellen Sie die Datei Config.xml und legen Sie den cron-Job darin fest.

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

Ihre Beobachtermethode:

  class CompanyName_ModuleName_Model_Observer extends Mage_Core_Model_Abstract
{

   public function setStatus()
   { 
//your action
   }
}

gehen Sie nun zu Ihrem Hosting-Cpanel und legen Sie den Pfad und die Laufzeit der Datei cron.php im Abschnitt cron-job fest

standardmäßig können Sie den Pfad wie php -f /home/mercodec/public_html/cron.php in Magento festlegen.

1
Deepak Mankotia

vorher müssen Sie dieses Skript in Ihrem Terminal ausführen. Für Ubuntu: */1 * * * */usr/bin/php /var/www/html/modulename/cron.php>/dev/null

0
Jeeva Chezhiyan