Heim > Web-Frontend > js-Tutorial > PHP-Daemon-Beispiel_Grundkenntnisse

PHP-Daemon-Beispiel_Grundkenntnisse

WBOY
Freigeben: 2016-05-16 16:10:51
Original
1151 Leute haben es durchsucht

PHP kann den Daemon-Prozess auch direkt starten und beenden, was natürlich viel einfacher und verständlicher ist. Der automatische Neustart des PHP-Daemon-Prozesses hängt natürlich immer noch vom Crontab-Zeitplan der Shell ab Führen Sie das Skript von Zeit zu Zeit aus, um festzustellen, ob es neu gestartet werden muss. Beenden Sie gegebenenfalls den Prozess, löschen Sie die RunFile-Datei, starten Sie neu und schreiben Sie die PID in die RunFile-Datei.

Code kopieren Der Code lautet wie folgt:

Funktion start($file){
$path = dirname(__FILE__).'/';
$runfile = $path.$file.'.run';
$diefile = $path.$file.'.die';
$file = $path."data/{$file}.php";
​ clearstatcache();
If(file_exists($runfile)){
          $oldpid = file_get_contents($runfile);
           $nowpid = shell_exec("ps aux | grep 'php -f process.php' | grep ${oldpid} | awk '{print $2}'");
//Wenn die PID-Nummer in der Runfile mit der aktuellen übereinstimmen kann und der Unterschied zwischen dem letzten Zugriff auf die Runfile und der aktuellen Zeit weniger als 5 Minuten beträgt, dann geben Sie
zurück If(($oldpid == $nowpid) && (time() - fileatime($runfile) < 300)){
echo „$file ist Kreis läuft nein“;
             zurück;
         }sonst{
//Wenn die PID-Nummer nicht übereinstimmt oder die Schleifenanweisung 300 Sekunden lang nicht ausgeführt wurde, beenden Sie den Prozess direkt und starten Sie
neu                 $pid = file_get_contents($runfile);
shell_exec("ps aux | grep 'php -f process.php' | grep {$pid} | xargs --if-no-run-empty kill");
}
}else{
//Schreibe die Datei-pid in die Ausführungsdatei
If(!($newpid = getmypid()) || !file_put_contents($runfile,$newpid)){
             zurück;
}
         while(true){
//Empfangen Sie die neue Nummer des Endprozesses, beenden Sie den Prozess und löschen Sie zugehörige Dateien
If(file_exists($diefile) && unlink($runfile) && unlink($diefile)){
                  zurück;
            }
                 /*Hier ist, was der Daemon-Prozess tut*/
              file_put_contents($file,"I'm Running Now".PHP_EOL,FILE_APPEND);
               /***********************/
               touch($runfile);
              schlafen(5);
}
}
}
start("test");

Hp sollte beim Schreiben von Daemon-Prozessen auf einige Punkte achten:

1. Sehen Sie im offiziellen Handbuch nach, ob diese Funktion den Cache-Status derselben Datei in einem Skript löscht Funktion wird nicht verwendet. Von dieser Funktion sind betroffen: stat(), lstat(), file_exists(), is_writable(),is_readable(), is_executable(), is_file(), is_dir(), is_link(),filectime (), fileatime( ), filemtime(), fileinode(), filegroup(),fileowner(), filesize(), filetype(), fileperms().
2. Wenn das Skript mehrmals ausgeführt wird, wird es vor der Ausführung erkannt. Wenn die Zeit seit der letzten Ausführung der Schleife jetzt mehr als 300 Sekunden beträgt oder die PID-Nummer nicht übereinstimmt, wird der Prozess neu gestartet (die Zeit muss sein). wird jedes Mal aktualisiert, wenn die Schleife ausgeführt wird).
3. Der automatische Neustart verwendet auch den Crontab-Zeitplan. Fügen Sie diese Datei zum Zeitplan hinzu:

Code kopieren Der Code lautet wie folgt:

crontab -e
#Offener Zeitplan, Einfügemodus

*/3 * * * * /usr/bin/php -f process.php
#Alle 3 Minuten einmal ausführen und den Prozess auf Eis legen

Das ist grundsätzlich in Ordnung. Wenn bestimmte Funktionen vorhanden sind, muss der Code noch geändert werden.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage