2009-05-04 4 views
2

Ich bin völlig neu in dem Thema Cron-Jobs, also habe ich keine Ahnung, wo ich anfangen soll, über sie zu lernen; wann, warum oder wie man sie mit meiner Zend Framework-Anwendung oder PHP im Allgemeinen verwendet.Erste Schritte mit Cron-Jobs und PHP (Zend Framework)

Kann jemand den Prozess mit einem Beispiel erklären oder einige gute Ressourcen empfehlen, um zu beginnen?

Antwort

3

Cron-Jobs ist ein Mechanismus zur Automatisierung von Aufgaben in Linux-Betriebssystemen. Und hat ziemlich wenig mit Zend Framework zu tun. Das Framework kann Ihnen helfen, eine erweiterte Cron-Aufgabe in PHP zu entwickeln. Aber dann müssen Sie Ihren Cron-Job in der Shell einrichten.

Googeln für „wie Cron-Job einrichten“, verriet diesen Link an der Spitze:

http://www.adminschoice.com/docs/crontab.htm

Ich bin sicher, dieser Artikel wird Ihnen helfen.

P.S.

Als Befehl auszuführen Sie so etwas wie setzen sollte:

/usr/local/bin/php -f <path_to_your_php_script>

, wo der erste Pfad für den vollständigen Pfad zu Ihrem php cli ausführbar ist, die auf Ihrem Computer abweichen.)

2

Als Zend Framework ist eine Sammlung von irgendwie lose gekoppelten Komponenten, um die Komponenten, die Sie in verwenden möchten,

which php

Viel Glück mit Cron-Jobs: Sie können durch die Ausgabe dieses Befehls stellen Sie sicher, jedes PHP-Skript einschließlich CLI-Skripte. Sie müssen jedoch sicherstellen, dass PHP die relevanten Zend Framework-Klassen finden kann, so dass Sie den Zend Framework-Bibliothekspfad zu Ihrer include_path hinzufügen müssen. Dann können Sie den Autoloader mit Zend_Loader_Autoloader (ZF> = 1.8) oder Zend_Loader (ZF < 1.8) einrichten, um das Leben zu erleichtern. Jetzt sollten Sie Zugriff auf alle Zend Framework-Komponenten haben, die Sie beliebig verwenden können.

Wie jedes andere Skript oder Programm kann dieses PHP-Skript natürlich in einem Cron-Job verwendet werden. Eine weitere Sache ist, dass Sie sicherstellen müssen, dass der Benutzer, der Ihre Cron-Jobs ausführt, Lesezugriff auf den Zend Framework-Bibliothekspfad hat, da PHP sonst die Zend Framework-Dateien nicht lesen kann.

Wenn Ihre Frage auf die Verwendung der MVC-Komponente in CLI-Skripten abzielt, muss ich zugeben, dass ich diesbezüglich keine Erfahrung habe. Ich nehme an, dass ein nicht zu vernachlässigender Aufwand unternommen werden muss, um entsprechende Anforderungs-, Antwort-, Distripter- und Routen-Klassen zu implementieren.

EDIT:

Bitte sehen this article für weitere Informationen.

2

Vielleicht ein Beispiel aus der Praxis helfen würde intersted werden können. Vor einigen Jahren habe ich an einem Event-Kalenderprojekt mit dem Zend Framework gearbeitet. In diesem Kalender könnte ein Benutzer ein Ereignis erstellen und dem Ereignis ein oder mehrere Daten hinzufügen. Natürlich habe ich dies als eine Viele-zu-Eins-Verbindung in meiner Datenbank implementiert, aber das bedeutete, dass das Ereignis zuerst existieren musste, um ein Datum anzuhängen.Allerdings wollte ich Benutzern erlauben, Daten hinzufügen, während sie das Ereignis erstellen, nicht nach sie erstellt ein Ereignis. Mit anderen Worten, ich wollte, dass der Benutzer alle Aspekte eines Ereignisses gleichzeitig bearbeitet und nur sendet, wenn er auf "Speichern" klickt.

Ich löste das Problem, indem ich einen neuen leeren Ereignisdatensatz in die Datenbank einfügte, wenn der Benutzer beginnt, einen Ereignisdatensatz zu erstellen. Dieser leere Datensatz wird ausgefüllt und gespeichert, wenn der Benutzer auf "Speichern" klickt, oder wird gelöscht, wenn der Benutzer auf "Abbrechen" klickt. Das Problem trat auf, wenn Benutzer ohne Klicken auf "Abbrechen" navigierten und der leere Ereignisdatensatz in der Datenbank belassen wurde. Schließlich würde sich die Datenbank mit diesen bedeutungslosen leeren Ereignissen füllen, und die Dinge könnten hässlich werden.

Ich schrieb eine Funktion namens "Maintenance()", die unter anderem alle nicht gespeicherten Datensätze älter als 24 Stunden löschte. Ich habe einen Cron-Job eingerichtet, der nachts lief und ein Kommandozeilen-PHP-Skript ausführte, das Maintenance() ausführte.

Andere Dinge, die Sie einen Cron-Job für verwendet werden könnten:

  • einen Stapel von E-Mail an neue Benutzer senden. (Alle 5 Minuten?)
  • aktualisieren User-Statistik (jede Stunde?)
  • Führen ressourcenintensive Vorgänge, wenn die Server nicht mit dem Verkehr knallt (jede Nacht um Mitternacht, oder einmal pro Woche am Sonntag Nächte?)
  • Alles andere Ereignis, das nicht als Reaktion auf eine Benutzeranfrage auftritt (was Jeff "Out-of-Band" nennt).
1

Hier ist ein Link auf eine gute Art und Weise ist Ihre implentation eines cron-System mit Zend Framework zu tun:

Cron tasks in Zend Framework apps

personnaly, ich habe es so angepasst Parameter dynamisch sein können, aber die Basis ist das gleiche :-)