Wie erstelle ich einen Cron-Job mit PHP?

Lesezeit: 6 Minuten

Wie erstelle ich einen Cron Job mit PHP
Benutzer2738520

Ich bin neu in der Verwendung von Cron-Jobs. Ich weiß gar nicht, wie ich das schreiben soll. Ich habe versucht, im Internet zu suchen, aber ich verstehe es immer noch nicht gut. Ich möchte einen Cron-Job erstellen, der meinen Code jede Minute ausführt. Ich verwende PHP, um es zu erstellen. Es funktioniert nicht.

Beispiel

run.php (Code, der jede Minute ausgeführt wird)

<?php

echo "This code will run every minute";

?>

cron.php

<?php

$path = dirname(__FILE__);
$cron = $path . "/run.php";
echo exec("***** php -q ".$cron." &> /dev/null");

?>

Angenommen, diese beiden Dateien befinden sich im selben Ordner.

Ist der Code, den ich falsch gemacht habe? Wenn falsch, sagen Sie mir bitte, wie ich es beheben kann.

  • hast du Shell-Zugriff auf dem Server?

    Benutzer557846

    11. September 2013 um 9:31 Uhr

  • Sie können nicht einfach *** ausgeben und erwarten, dass ein Cronjob erstellt wird. Lesen Sie hier nach, wie Sie Cronjobs erstellen (vorausgesetzt, Sie befinden sich auf einem Server mit Linux). thesitewizard.com/general/set-cron-job.shtml

    – dünn

    11. September 2013 um 9:31 Uhr

  • @Dagon: Das weiß ich nicht. Ich werde das überprüfen.

    – Benutzer2738520

    11. September 2013 um 9:40 Uhr

  • Es ist ein einmaliges Ereignis, also nutzen Sie es crontab

    – Ed heilen

    26. Januar 2014 um 16:49 Uhr

1647061446 599 Wie erstelle ich einen Cron Job mit PHP
Nikolai Iwanow

Dies ist die beste Erklärung mit Code in PHP, die ich bisher gefunden habe:

http://code.tutsplus.com/tutorials/managing-cron-jobs-with-php–net-19428

Zusamenfassend:

Obwohl die Syntax zum Planen eines neuen Jobs auf den ersten Blick entmutigend erscheinen mag, ist sie eigentlich relativ einfach zu verstehen, sobald Sie sie aufgeschlüsselt haben. Ein Cron-Job hat immer fünf Spalten, von denen jede einen chronologischen „Operator“ darstellt, gefolgt vom vollständigen Pfad und dem auszuführenden Befehl:

* * * * * home/path/to/command/the_command.sh

Jede der chronologischen Spalten hat eine spezifische Relevanz für den Zeitplan der Aufgabe. Sie sind wie folgt:

Minutes represents the minutes of a given hour, 0-59 respectively.
Hours represents the hours of a given day, 0-23 respectively.
Days represents the days of a given month, 1-31 respectively.
Months represents the months of a given year, 1-12 respectively.
Day of the Week represents the day of the week, Sunday through Saturday, numerically, as 0-6 respectively.

Geben Sie hier die Bildbeschreibung ein

Wenn man zum Beispiel eine Aufgabe für jeden ersten Tag im Monat um 00:00 Uhr planen möchte, würde das ungefähr so ​​aussehen:

0 0 1 * * home/path/to/command/the_command.sh

Wenn wir eine Aufgabe so planen wollten, dass sie jeden Samstag um 8:30 Uhr ausgeführt wird, würden wir sie wie folgt schreiben:

30 8 * * 6 home/path/to/command/the_command.sh

Es gibt auch eine Reihe von Operatoren, mit denen der Zeitplan noch weiter angepasst werden kann:

Commas is used to create a comma separated list of values for any of the cron columns.
Dashes is used to specify a range of values.
Asterisksis used to specify 'all' or 'every' value

Besuchen Sie den Link für den vollständigen Artikel, er erklärt:

  1. Welches Format hat der Cronjob, wenn Sie ihn manuell eingeben/bearbeiten möchten?
  2. So verwenden Sie PHP mit der SSH2-Bibliothek, um sich als Benutzer zu authentifizieren, welche Crontab Sie bearbeiten werden.
  3. Vollständige PHP-Klasse mit allen notwendigen Methoden zur Authentifizierung, Bearbeitung und Löschung von Crontab-Einträgen.

  • Diese Antwort stellt den Link bereit, erklärt jedoch nicht “Erstellen eines Cron-Jobs mit PHP”.

    – Dziad Borowy

    6. Januar um 16:22 Uhr

Wie erstelle ich einen Cron Job mit PHP
Alister Bulmann

Auf die gleiche Weise, wie Sie versuchen, cron.php auszuführen, können Sie ein anderes PHP-Skript ausführen. Sie müssen dies jedoch über die CLI-Schnittstelle tun.

#!/usr/bin/env php
<?php
# This file would be say, '/usr/local/bin/run.php'
// code
echo "this was run from CRON";

Fügen Sie dann einen Eintrag zur Crontab hinzu:

* * * * * /usr/bin/php -f /usr/local/bin/run.php &> /dev/null

Wenn das Skript run.php ausführbare Berechtigungen hätte, könnte es direkt in der Crontab aufgelistet werden, auch ohne den Teil /usr/bin/php. Der ‘env php’-Teil im Skript würde das geeignete Programm finden, um den PHP-Code tatsächlich auszuführen. Also, für die ‘ausführbare’ Version – fügen Sie der Datei eine ausführbare Berechtigung hinzu:

chmod +x /usr/local/bin/run.php

und fügen Sie dann den folgenden Eintrag in crontab hinzu:

* * * * * /usr/local/bin/run.php &> /dev/null

1647061447 810 Wie erstelle ich einen Cron Job mit PHP
Großer Ingwer-Nerd

Zu Alister hinzugefügt, können Sie die crontab normalerweise (nicht immer) bearbeiten, indem Sie crontab -e in einer ssh-Sitzung auf dem Server eingeben.

Die Sterne repräsentieren (* bedeutet jede dieser Einheit):

[Minute] [Hour] [Day] [Month] [Day of week (0 =sunday to 6 =saturday)] [Command]

Darüber könnte man noch etwas lesen das hier.

Geben Sie Folgendes in das Linux/Ubuntu-Terminal ein

 crontab -e 

Wählen Sie einen Editor aus (manchmal wird nach dem Editor gefragt) und dieser läuft jede Minute

*       *       *       *       *       /usr/bin/php path/to/cron.php &> /dev/null

Verwenden Sie besser das Projekt Cron in Kombination mit dem Linux-Cronjob für diese Aufgabe. Es ermöglicht Ihnen, Laufzeiten in Ihrem PHP-Code zu konfigurieren, unterstützt Hintergrundjobs und ist einfach zu bedienen.

Rufen Sie im ersten Schritt jede Minute ein PHP-Skript auf:

* * * * * /usr/local/bin/run.php &> /dev/null

Zweiter Schritt Verwenden Sie die cron/cron Paket zum Konfigurieren von Laufzeiten direkt in PHP.

$deprecatedStatus = new ShellJob();
$deprecatedStatus->setCommand('cd /app && /usr/local/bin/php cron/updateDeprecatedStatus.php');
$deprecatedStatus->setSchedule(new CrontabSchedule('* * * * */2'));


$displayDate = new ShellJob();
$displayDate->setCommand('cd /app && /usr/local/bin/php cron/updateDisplayDate.php');
$displayDate->setSchedule(new CrontabSchedule('* * * * */5'));

Die Details zur Verwendung finden Sie im verlinkten Repository.

Wie erstelle ich einen Cron Job mit PHP
acharris

Das kann von Ihrem Webhost abhängen, wenn Sie nicht Ihre eigenen Inhalte hosten. Wenn Ihr Webhost das Erstellen von Chron-Jobs unterstützt, hat er möglicherweise ein Formular, das Sie ausfüllen müssen, damit Sie die Häufigkeit auswählen und den absoluten Pfad zu der auszuführenden Datei eingeben können. Mein Webhost (DreamHost) ermöglicht es mir beispielsweise, benutzerdefinierte Cron-Jobs zu erstellen, indem ich den absoluten Pfad zur Datei eintippe und die Häufigkeit aus einem Auswahlmenü auswähle. Dies ist möglicherweise für Ihren Server nicht möglich. In diesem Fall müssen Sie die Crontab entweder direkt oder über Ihre hostspezifische Methode bearbeiten.

Erstellen Sie, wie Alister Bulman oben beschrieben hat, eine PHP-Datei, die mit CLI ausgeführt werden soll (stellen Sie sicher, dass Sie #!/usr/bin/env php ganz am Anfang der Datei vor dem <?php Schild. Dadurch wird sichergestellt, dass die Shell weiß, welche ausführbare Datei aufgerufen werden soll, wenn das Skript ausgeführt wird.

1647061448 582 Wie erstelle ich einen Cron Job mit PHP
Gokulpriya

Öffnen Sie zuerst Ihren SSH-Server mit Benutzername und Passwort und wechseln Sie zum Standard-Root-Benutzer (Benutzer mit allen Berechtigungen). Führen Sie dann die folgenden Schritte aus.

  1. geben Sie den Befehl ein crontab -l Jetzt sehen Sie die Liste aller Cronjobs.
  2. betreten crontab -e Eine Datei mit allen Cronjobs wird geöffnet.
  3. Bearbeiten Sie die Datei mit Ihrem Cronjob-Zeitplan als min hr
    dayofmonth month dayofweek pathtocronjobfile
    und speichern Sie die Datei.
  4. Jetzt sehen Sie eine Antwort crontab: installing new
    crontab
    Überprüfen Sie nun erneut die Liste der Cronjobs, Ihr Cronjob wird dort aufgeführt.

992740cookie-checkWie erstelle ich einen Cron-Job mit PHP?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy