2017-06-09 2 views
1

Ich habe benutzerdefinierte module.In erstellt, die ich einen cron Tab config.xml erstelltCron Registerkarte funktioniert nicht in benutzerdefinierten Modul

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Test_Cron> 
      <version>0.1.0</version> 
     </Test_Cron> 
    </modules> 
    <frontend> 
     <routers> 
      <testcron> 
       <use>standard</use> 
       <args> 
        <module>Test_Cron</module> 
        <frontName>testcron</frontName> 
       </args> 
      </testcron> 
     </routers> 
    </frontend> 
    <global> 
     <helpers> 
      <testcron> 
       <class>Test_Cron_Helper</class> 
      </testcron> 
     </helpers> 
     <models> 
      <testcron> 
       <class>Test_Cron_Model</class> 
      </testcron> 
     </models> 
    </global> 
    <crontab> 
     <jobs> 
      <testingCron> 
       <schedule> 
        <cron_expr>*/5 * * * *</cron_expr> 
       </schedule> 
       <run> 
        <model>testcron/observer::stockManager</model> 
       </run> 
      </testingCron> 
     </jobs> 
    </crontab> 
</config> 

und dies ist meine Beobachter-Funktion.

<?php 

class Test_Cron_Model_Observer { 

    public function stockManager(){ 
Mage::log("Cron executed on ".date('Y-m-d H:i:s'),null,"yngCron.log"); 
} 
} 
?> 

Mein Magento-Systemprotokoll ist aktiviert. , wenn ich diese Methode manuell aufrufen es funktioniert, aber es funktioniert nicht von cron

Mage::getModel('testcron/observer')->stockManager(); 

Bitte helfen Sie und lassen Sie mich wissen, wenn ich etwas fehlt bin

+2

haben Sie Ihre cron_schedule Tabelle überprüft? – NID

Antwort

1

Ich habe Ihre gegebenen Code reviewd dies richtig ist. Wenn Ihr Cron nicht ausgeführt wird, sollten Sie das Skript cron.sh alle 5 Minuten ausführen. Die Datei cron.sh befindet sich im Stammordner und überprüft auch die Tabelle cron_schedule in Ihrer Magento-Datenbank, in der Sie Ihre Cron-Planung überprüfen können.

Für cron.sh Skript ausführen, sehen alle 5 Minuten, um den Befehl: - */5 * * * * /bin/sh /absolute/path/to/magento/cron.sh

0

Die Antwort von Abhinav ist richtig, wenn die cron.sh nicht auf dem Server ausgeführt wird. Allerdings, wenn der Cron läuft, könnte es ein paar andere Dinge sein. Stellen Sie sicher, dass Sie den Cache leeren/löschen. Außerdem verfügt das Systemcron möglicherweise nicht über ausreichende Berechtigungen zum Erstellen der Protokolldatei. Überprüfen Sie die Datenbanktabelle cron_schedule, um festzustellen, ob der Jobcode in die Warteschlange gestellt wurde. Sie können den Job manuell in die Warteschlange stellen, indem Sie die Datei cron.sh oder cron.php ausführen. Wenn der Job danach nicht in die Warteschlange gestellt wird, handelt es sich höchstwahrscheinlich um einen Cache- oder Code-Fehler.

Verwandte Themen