it-swarm.com.de

Wie erstelle ich einen Cron-Job mit PHP?

Ich bin neu im Umgang mit Cron Job. Ich weiß nicht mal, wie ich es schreiben soll. Ich habe versucht, aus dem 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? Falls falsch, sagen Sie mir bitte, wie ich das Problem beheben kann.

83
user2738520

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 für das Planen eines neuen Jobs auf den ersten Blick entmutigend erscheint, ist es relativ einfach zu verstehen, wenn Sie den Job auflösen. 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/pfad/zu/command/the_command.sh

Jede der chronologischen Spalten hat eine bestimmte 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.

 enter image description here

Wenn Sie zum Beispiel am ersten Tag jedes Monats eine Aufgabe für 12 Uhr morgens planen möchten, würde dies ungefähr so ​​aussehen:

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

Wenn wir jeden Samstag um 8:30 Uhr eine Aufgabe planen wollen, schreiben wir sie wie folgt:

30 8 * * 6 home/Pfad/zu/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, der Folgendes 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 möchten.
  3. Vollständige Klasse PHP mit allen erforderlichen Methoden zum Authentifizieren, Bearbeiten und Löschen von Crontab-Einträgen.
52
Nikolay Ivanov

Auf dieselbe 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 der crontab einen Eintrag hinzu:

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

Wenn das run.php-Skript über ausführbare Berechtigungen verfügte, könnte es auch ohne den Teil/usr/bin/php direkt in der crontab aufgeführt werden. Der 'env php'-Teil im Skript würde das geeignete Programm finden, um den Code PHP tatsächlich auszuführen. Fügen Sie also für die 'ausführbare' Version 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
28
Alister Bulman

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

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

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

Sie können mehr über hier lesen. 

10
Big Ginger Nerd

Geben Sie Folgendes in das Linux/Ubuntu-Terminal ein

 crontab -e 

wählen Sie einen Editor aus (manchmal fragt er nach dem Editor) und das wird jede Minute ausgeführt

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

$command = "php ".CRON_PATH.php ";
if(substr(php_uname(), 0, 7) == "Windows"){
pclose(popen("start /B ". $command, "r"));
}else{
Shell_exec($command ." > /dev/null &");
}

1
shubhi agrawal

Erstellen Sie einen solchen Cronjob, um jede Minute zu bearbeiten

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

Es gibt einen einfachen Weg, dies zu lösen: Sie können PHP-Dateien alle 1 Minute per cron ausführen, und innerhalb der ausführbaren PHP-Datei müssen Sie eine "if" -Anweisung ausführen, wenn die Uhrzeit "jetzt" wie folgt ist

<?/** suppose we have 1 hour and 1 minute inteval 01:01 */

$interval_source = "01:01";
$time_now = strtotime( "now" ) / 60;
$interval = substr($interval_source,0,2) * 60 + substr($interval_source,3,2);


if( $time_now % $interval == 0){
/** do cronjob */
}
0
maxkuku

warum verwenden Sie nicht curl? logisch. Wenn Sie eine php-Datei ausführen, werden Sie dies über eine URL in Ihrem Browser ausführen. __

while(true)
{
    sleep(60); // sleep for 60 sec = 1 minute

    $s = curl_init();
    curl_setopt($s,CURLOPT_URL, $your_php_url_to_cron); 
    curl_exec($s); 
    curl_getinfo($s,CURLINFO_HTTP_CODE); 
    curl_close($s);
}
0
Ecko Santoso

Ö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. gib den befehl crontab -l ein jetzt siehst du die liste aller cronjobs.
  2. crontab -e eingeben eine datei mit allen cron jobs 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 siehst du eine Antwort crontab: installing new crontab jetzt überprüfe noch einmal die Liste der Cronjobs, die dein Cronjob dort auflistet.
0
Gokulpriya