Websites können geplante Aufgaben mit Cron ausführen

Uhr

Wir haben eine Reihe redundanter Überwachungssysteme im Einsatz, die regelmäßig Prozesse ausführen. Einige laufen jede Minute, andere einmal pro Nacht, je nachdem, was sie tun. Beispielsweise können wir ein Skript ausführen, das alle Kunden, die seit 30 Tagen keinen Kauf getätigt haben, exportiert, um ihnen einen Gutschein zu senden.

Anstatt zu versuchen, all dies von Hand zu verfolgen, ist es viel einfacher, Jobs zu erstellen, die automatisch geplant und ausgeführt werden. Auf Unix-basierten Systemen wird dies mit Cron erreicht. Für Sie Leute, die wissen, was Sie tun, können Sie mich und die Leser aufklären, wenn ich Desinformation wegwerfe.

Es ist bedauerlich, aber der typische Webentwickler kennt Cron überhaupt nicht. Selbst wenn dies der Fall ist, bieten Webhosting-Unternehmen häufig keinen Zugang zu oder keine Unterstützung für Cron. Mein Gastgeber ist einer der letzteren - sie erlauben es Ihnen, es zu benutzen, aber sie unterstützen es nicht.

Was ist Cron?

cron ist nach dem griechischen Wort Chronos benannt Zeit. Cron wird in einer Endlosschleife ausgeführt, um Aufgaben auszuführen, die von Crontab (möglicherweise benannt nach) gesammelt wurden Tabulator. Diese Aufgaben werden normalerweise als Cronjobs bezeichnet und können auf Skripte auf Ihrer Site verweisen.

Erklärung des Cron-Diagramms

Wie richte ich die Crontab ein?

Es kann eine Herausforderung sein, Cron zum Laufen zu bringen. Hier ist also, was ich gelernt habe und wie ich es gemacht habe Wenn saugen:

  1. Ich habe mein Skript eingerichtet, um Twitter zu überprüfen API um zu sehen, ob jemand geantwortet hatte @ifsuck. Ich habe diese Nachrichten mit den Nachrichten verglichen, die ich bereits auf der Website gespeichert habe, und neue eingegeben.
  2. Sobald das Skript funktionierte, aktivierte ich die Berechtigungen für den Benutzer zum Ausführen des Skripts (744) und fügte den Skriptverweis zu meiner Cronjob-Datei hinzu - dazu später mehr.
  3. Ich musste mich dann über SSH auf meiner Website anmelden. Auf einem Mac musste das Terminal geöffnet und eingegeben werden SSH-Benutzername@domain.com Dabei war Benutzername der Benutzername, den ich verwenden wollte, und Domain war die Website. Ich wurde dann aufgefordert und gab das Passwort.
  4. Ich habe dann versucht, das Skript direkt an der Eingabeaufforderung auszuführen, indem ich den Dateinamen und den relativen Pfad auf dem Server eingegeben habe: /var/www/html/myscript.php
  5. Sobald es richtig funktioniert hat, habe ich den erforderlichen Unix-Code in die erste Zeile der Datei eingefügt: #! / usr / bin / php -q . Ich glaube, dies weist Unix einfach an, PHP zum Ausführen des Skripts zu verwenden.
  6. In der Terminal-Befehlszeile habe ich getippt crontab (Andere müssen möglicherweise tippen crontab -e) und drücke die Eingabetaste ... und das war alles was benötigt wurde!

Syntax für Ihre Cronjob-Datei

In Bezug auf # 2 oben verwendet Cron ein ausgeklügeltes Schema, um zu bestimmen, wann Ihre Skripte ausgeführt werden. Tatsächlich können Sie dies kopieren und in Ihr Cronfile einfügen (auf meinem Host befindet es sich in / var / spool / cron / mit dem Dateinamen der gleiche wie mein Benutzername).

# + —————- Minute (0 - 59)
# | + ————- Stunde (0 - 23)
# | | + ———- Tag des Monats (1 - 31)
# | | | + ——- Monat (1 - 12)
# | | | | + - Wochentag (0 - 6) (Sonntag = 0 oder 7)
# | | | | |
* * * * * /var/www/html/myscript.php

Das obige wird mein Skript jede Minute ausführen. Wenn ich wollte, dass es nur einmal pro Stunde läuft, würde ich nur angeben, wie viele Minuten nach der Stunde ich möchte, dass es läuft. Wenn es also bei der 30-Minuten-Marke wäre:

30 * * * * /var/www/html/myscript.php

Stellen Sie sicher, dass Sie die Berechtigungen für diese Datei auch als ausführbar festlegen! Ich fand, dass Syntax, Berechtigungen und das Ausführen von crontab über das Terminalfenster die wichtigsten Faktoren waren. Jedes Mal, wenn ich die Datei erneut speichere, müssen meine Berechtigungen ebenfalls zurückgesetzt werden!

UPDATE: Wenn Sie sicherstellen möchten, dass die Jobs ausgeführt werden, besteht eine einfache Möglichkeit darin, ein Datenbankfeld mit der letzten Ausführung des Skripts zu aktualisieren. Wenn es seltener vorkommt, können Sie einfach eine E-Mail an sich selbst senden.

Zusätzliche Cron-Ressourcen:

Wie viele Jobs könnten Sie mit Cron automatisieren?

8 Kommentare

  1. 1

    Gut behandelter Artikel über das Einrichten eines Cron Für jemanden, der noch keine Erfahrung mit Crojobs hat, ist es am schwierigsten, das Cronjob-Ausführungsintervall herauszufinden, und es ist ziemlich üblich, beim ersten Versuch ein falsches Intervall zu erhalten. Wenn Ihre Cronjobs zeitkritisch sind, sollten Sie einige Codes in das Skript aufnehmen, um den Status wiederzugeben, damit Sie über den Status der Jobausführung informiert werden.

  2. 2

    Hallo Doug,

    Ein paar Dinge, die bei der Arbeit mit Cron-Jobs zu beachten sind.

    Nach ein paar Dutzend wünschen Sie sich zunächst eine Benutzeroberfläche, eine Datenbank und eine englisch anmutende Syntax 😉

    Zweitens löst cron den Job zum angegebenen Zeitpunkt aus, unabhängig davon, ob der vorherige Aufruf des Jobs abgeschlossen wurde. Wenn Sie also einen Job einmal pro Minute ausführen, der 2 Minuten dauert, werden schnell viele gleiche Jobs ausgeführt.

    Als nächstes gibt es so gut wie keine Fehlerberichterstattung, wenn etwas schief geht. Sie müssen also Ihre eigene Fehlerberichterstattung hinzufügen.

    Ich habe diese auf verschiedene Arten angesprochen:
    - Lassen Sie die Anwendung per Cron-Look in einer Datenbank auslösen, um festzustellen, was ausgeführt werden muss. Führen Sie es einmal pro Minute oder Stunde aus, je nachdem, was Sie möchten
    - Lassen Sie jedes Skript eine Sperrdatei in / tmp erstellen. Wenn diese vorhanden ist, starten Sie sie nicht erneut. Dadurch werden doppelte Jobs verhindert, wenn Sie sie nicht möchten
    - Wenn das Skript feststellt, dass die Sperrdatei älter als 1 Stunde ist (oder was auch immer darauf hindeutet, dass Sie gestorben sind), senden Sie eine E-Mail-Benachrichtigung
    - Lassen Sie das Skript bei fehlgeschlagenem Auftrag eine E-Mail senden, damit Sie wissen, dass ein Fehler aufgetreten ist
    - Sehen Sie sich Frameworks wie Flux oder kommerzielle Scheduler an, wenn Ihre Anforderungen über einige Skripte hinausgehen

    Chris

  3. 4

    Ich werde auch hinzufügen, dass auf den meisten Linux / Unix-Systemen "crontab -e" das ist, was Sie zum Bearbeiten Ihrer crontab verwenden. Ich denke, Ihr Host (Jumpline) verwendet aus Sicherheitsgründen eine modifizierte Version.

  4. 5

    Ich erinnere mich noch an den ersten Tag, als ich Cronnie traf. Ich hatte Dinge über sie gehört, dass sie zuverlässig war, immer pünktlich, aber manchmal etwas verwirrend über ihre Absichten.

    Ich fand das wahr, da sie mir zunächst ein Rätsel war. Nachdem ich mich nach ihr erkundigt hatte, wurde mir ziemlich schnell klar, wie sie gerne operierte. Jetzt kann ich mir keinen Tag ohne sie in meinem Leben vorstellen. Sie macht das Alltägliche aufregend und nimmt mir viele Lasten von den Schultern.

    In aller Ernsthaftigkeit habe ich das Gefühl, ich habe nur die Oberfläche mit dem gekratzt, was ich mit Cron-Jobs automatisieren kann. Sie sind wirklich ein bester Freund der Entwickler. Wenn Sie jemanden wie CPanel zum Verwalten Ihres Servers verwenden, bietet es eine viel benutzerfreundlichere Oberfläche zum Erstellen von Crones. Komplett mit Dropdown-Menüs für Minute, Stunde, Tag, Monat usw., die die Cron-Linie für Sie bilden.

  5. 7

    Ich sehe definitiv, dass dies etwas ist, das jeder Vermarkter verwenden sollte ... Gibt es jemanden, der diesen Service anbieten kann, weil er ein bisschen zu "technisch" klingt?

Was denken Sie?

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden.