Einrichten der CRON-job in Magento
Gibt es viele Anleitungen für das einrichten von cron, und ich glaube, ich habe es getan, richtig, aber für einige Grund es nicht funktioniert. Ich habe auch eine controller-Klasse zu testen, das Modell, und es funktioniert richtig.
Hier ist meine config.xml:
<config>
<modules>
<VPS_Export>
<version>0.1.0</version>
</VPS_Export>
</modules>
<global>
<models>
<vps_export>
<class>VPS_Export_Model</class>
</vps_export>
</models>
<helpers>
<vps_export>
<class>VPS_Export_Helper</class>
</vps_export>
</helpers>
</global>
<frontend>
<routers>
<vps_export>
<use>standard</use>
<args>
<module>VPS_Export</module>
<frontName>vpsexport</frontName>
</args>
</vps_export>
</routers>
</frontend>
<crontab>
<jobs>
<vps_export>
<schedule>
<cron_expr>*/5 * * * *</cron_expr><!-- every 5 minutes -->
</schedule>
<run>
<model>vps_export/observer::exportProducts</model>
</run>
</vps_export>
</jobs>
</crontab>
</config>
Meine Observer.php Datei:
<?php
class VPS_Export_Model_Observer
{
public function exportProducts()
{
echo "VPS Export Products called!";
Mage::Log("exportProducts called!");
}
}
?>
Und mein test IndexController.php Datei:
<?php
class VPS_Export_IndexController extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{
echo "index action called!";
Mage::getModel('vps_export/observer')->exportProducts();
}
}
?>
Wenn ich meinen browser auf http://my_server/vpsexport/index sehe ich den richtigen Ausgang aus der echo-Anweisungen und die Nachricht wird gedruckt, um das Protokoll, damit ich weiß, das Modell richtig konfiguriert ist. Aber der cron wird nicht die gleichen Ergebnisse. Wenn ich cron.php manuell, ich bekomme keine Fehler, aber es immer noch nicht scheinen, etwas zu tun.
Irgendwelche Gedanken?
Ich wusste nicht, über die cron_schedule Tabelle vor. Ja, es gibt Elemente in der Tabelle und Sie zu sein scheinen ausführen, aber mein log-Meldungen, die noch nicht das Protokoll. Wie kann ich testen, um sicherzustellen, daß es tatsächlich den Aufruf der richtigen Funktion, wenn es ausführt, dass der cron-job?
InformationsquelleAutor BrianVPS | 2011-04-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Soweit ich das verstanden habe magento cron-system, es arbeitet in 2 Phasen:
cron_schedule
)scheduled_at
Spalte mit der aktuellen Zeit.Wie Sie sagen, gibt es Einträge in Ihrem
cron_schedule
Tabelle, die erste phase ist okAlso, um zu überprüfen, ob Ihre cron führt die Ordnung, die Sie tatsächlich haben, richten Sie einen cronjob auf Ihrem server, das würde Ihr computer, wenn Sie lokal arbeiten.
Es ist eigentlich sehr einfach auf ubuntu, ich denke, es wird komplizierter sein, auf windows, sondern (erraten wieder) nicht imposible.
Oder vielleicht Aktualisierung Ihrer browser auf Ihre cron.php Datei ein paar mal würde alle 5 Minuten (wie hast du es konfiguriert, die in Ihrem config.xml) würde den trick tun, aber die Einrichtung eines cron-Job wäre das schon mehr eficient 🙂
Hoffe, Das Hilft
edit: hier ist, was mein cronjob sieht so aus, wenn es dir hilft:
*/5 * * * * www-data /usr/bin/php /var/www/vps_local_5/cron.php
. Sieht das richtig? Ich habe auch versucht erfrischend mein browser zeigte auf cron.php aber nie bringt nichts in der log. Kann es sein das ausführen der cron-job, aber ich habe keine Möglichkeit zu bestätigen...Ich habe bearbeitet meine Antwort, auch mein cronjob: es sieht aus diferent als deins...
Danke @david-parloir, aber ich bin immer noch Probleme. Ihre crontab verwendet die wget-version aufrufen cron.php aber es ist im wesentlichen die gleiche. Das ist nicht das Problem. cron.php aufgerufen WIRD...wenn nicht, werden die Einträge nicht in die Datenbank. Die cron_schedule Tabelle enthält die Einträge, die ich erwarten würde, und Sie behaupten, die Ausführung erfolgreich, aber keiner meiner log-Meldungen und keiner von den erwarteten Ergebnissen auftreten. Was bin ich?
InformationsquelleAutor OSdave
Kann es einen grundlegenden Unterschied, um die Leistung und die Auswirkungen, wie Sie führen Sie den cron-Skript abhängig, ob es die als nativ oder über Ihren web-server.
Eine wichtige defference ist, wenn Sie die APC opcode-cacher für PHP ( das ist ein wirklich gute Idee ). Laut der Dokumentation, Zugriff auf PHP von der Befehlszeile aus wird klar unten den cache, das ist wahrscheinlich nicht etwas, das Sie wirklich wollen, zu passieren, alle 5 Minuten!
haben Sie überprüft, dass die APC eigentlich funktioniert das? haben Sie finden Sie in der Dokumentation, wo das angegeben ist?
Nein, ich habe nicht geschaut in APC oder getan wird nichts mehr mit diesem. Ich glaube ehrlich nicht daran erinnern, was ich arbeiten war, wenn ich hatte dieses Problem, aber cron scheint zu funktionieren für mich jetzt.
InformationsquelleAutor Steve Holdoway
Ich weiß, das ist Ewigkeiten später, aber ich sollte erweitern ein wenig. Ich habe irgendwie das misspoke, da PHP von der Befehlszeile aus mit APC aktiviert, benutzt seinen eigenen cache. Wenn Sie führen Sie den cron-Job über den web-server, dann ist es vorhandene cache verfügbar ist, und Hinzugefügt.
Store relevanten Sachen von run zu run. Mit APC mit einer Befehlszeile job ist potenziell ein Hindernis, wie alle sind Sie möglicherweise tun ist, laden Sie den cache, dann fallen Sie.
InformationsquelleAutor Steve Holdoway