Wie richte ich einen Cron-Job ein Skript ein, das Teil eines Zend Framework-Projekts ist?

8

Ich habe ein Zendframework-Projekt, für das ich regelmäßig ein Skript ausführen muss, um den Inhalt eines Ordners hochzuladen, und ein anderes, um es herunterzuladen. Das Skript selbst ist fertig, aber ich habe Mühe herauszufinden, wo oder wie ich das Skript für die Ausführung einrichten soll. Ich habe es bisher mit Luchs und Curling versucht. Ich hatte zuerst einen Fehler über spezifizierten Controller falsch und ich behoben, aber jetzt bekomme ich nur einen leeren Bildschirm, wenn ich das Skript ausführen, aber Datei (en) werden nicht hochgeladen.

Wie richte ich für ein zendframework-Projekt ein Skript ein, das von cron ausgeführt wird?

BEARBEITEN: Meine Projektstruktur sieht so aus:

%Vor%

cronjob.php ist das Skript, das ich ausführen muss. Die ersten Zeilen davon sind:

%Vor%

Ich habe auch meine index.php Datei wie folgt geändert:

%Vor%

Aber jetzt, wenn ich jetzt versuche, das Skript auszuführen, bekomme ich die Nachricht:

%Vor%

Bedeutet das, dass ich einen Controller für den Zweck erstellen muss? Der Skriptordner befindet sich jedoch außerhalb des Anwendungsordners. Wie behebe ich das?

    
Napoleon 19.11.2011, 01:03
quelle

3 Antworten

10

Danke für deine Antworten. Aber die Lösung, die für mich funktionierte, kam von dieser Seite Howto: Zend Framework Cron . Der ursprüngliche Link ist tot, aber seine Kopie kann im Internet Archive gefunden werden.

Ich poste hier einen Ausschnitt des Codes. Aber bitte, das ist nicht meine Lösung. Alle Credits gehen an den ursprünglichen Autor.

  

Der Trick bei Cronjobs ist, dass Sie nicht die gesamte View laden wollen   Teil von ZF, wir brauchen keine HTML-Ausgabe! Um das zu erreichen   Arbeit, ich habe eine neue Konstante in der Cronjob.php definiert, die ich überprüfen werde   für in der index.php.

cronjob.php

%Vor%

index.php

%Vor%     
Napoleon 02.12.2011, 21:20
quelle
2

Stellen Sie zuerst sicher, dass Sie dies oben in Ihrem PHP-Skript haben (gefolgt von dem öffnenden PHP-Tag):

%Vor%

Zweitens stellen Sie sicher, dass die Berechtigungen richtig sind. Zum Beispiel, wenn Sie den Cron-Job unter root erstellen, dann glaube ich, dass root versuchen wird, das PHP-Skript auszuführen, wenn ich mich nicht irre. Wenn Sie den Cron-Job unter einem anderen Benutzer erstellen, verfügen sie über die richtigen Berechtigungen für das PHP-Skript.

Zum Beispiel (beachten Sie, dass abhängig von Ihrer Serverumgebung die Berechtigungen entsprechend angepasst werden müssen. Dies ist nur ein hypothetisches Beispiel)

%Vor%

Wenn Sie die aktuellen Cron-Jobs für den aktuellen Benutzer sehen möchten, mit dem Sie angemeldet sind, tun Sie Folgendes:

%Vor%

Oder, wenn Ihr Cron-Job in einem der Ordner wie cron.hourly, cron.weekly usw. eingerichtet ist, können Sie anzeigen, welcher Benutzer diese Jobs "besitzt", indem Sie dies tun:

%Vor%

Dann werden sie am Ende der Datei angezeigt.

Um nun den Cron-Job einzurichten, führen Sie diesen Befehl aus, um den Editor zu öffnen:

%Vor%

Geben Sie dann Ihre Werte ein:

%Vor%

Speichern und schließen Sie die Datei. Offensichtlich wirst du 1 2 3 4 5 in etwas real und sinnvolles ändern. Weitere Informationen hierzu finden Sie unter auf dieser Seite (google "cron").

Haftungsausschluss : Ich bin auf keinen Fall ein Cron-Meister. Bitte korrigieren Sie mich, wenn ich falsch liege.

    
Yes Barry 19.11.2011 03:15
quelle
0

Was ich getan habe, war eine Mini-App mit dem Namen Scripts zu erstellen. Hier ist die Struktur:

%Vor%

Ich verwende dann php /path/to/Scripts/Index.php --j = folderScript oder /path/to/Scripts/Index.php --b = folderScript für ein Build-Skript

Ich überlasten dann die zend_application bootstrap run Methode wie folgt

%Vor%

Hoffe, dass Sie angefangen haben, ich habe mit einem Controller / Modul in ZF geschaut, aber schien zu viel Aufwand

Symfony verwendet einen guten Ansatz auch mit ihrer App / Konsole, könnte es wert sein, in ihr Setup zu schauen

    
Jason Brumwell 19.11.2011 16:55
quelle

Tags und Links