Im Allgemeinen laufen Serverprogramme im Hintergrund des Systems, was sich stark von gewöhnlichen interaktiven Befehlszeilenprogrammen unterscheidet. In glibc gibt es einen Funktionsdämon. Der Aufruf dieser Funktion kann dazu führen, dass der aktuelle Prozess das Terminal verlässt und zu einem Daemon-Prozess wird. Weitere Informationen finden Sie unter man daemon. Derzeit gibt es in PHP keine solche Funktion. Wenn Sie interessiert sind, können Sie natürlich eine PHP-Erweiterungsfunktion schreiben, um sie zu implementieren.
Es gibt zwei Möglichkeiten, die Daemonisierung von PHP-Befehlszeilenprogrammen zu implementieren:
nohup php myprog.php > log.txt &
Daemonisierung wird hier implementiert.
Führen Sie php myprog.php alleine aus. Wenn Strg+C gedrückt wird, wird die Programmausführung unterbrochen und der aktuelle Prozess und die untergeordneten Prozesse werden beendet.
php myprog.php &, obwohl das Ausführungsprogramm auch im Hintergrund ausgeführt wird, hängt es tatsächlich vom Terminal ab. Wenn der Benutzer das Terminal verlässt, wird der Prozess abgebrochen.
function daemonize() {$pid = pcntl_fork();if ($pid == -1) {die("fork(1) failed!\n"); }elseif ($pid > 0) {//让由用户启动的进程退出exit(0); }//建立一个有别于终端的新session以脱离终端posix_setsid();$pid = pcntl_fork();if ($pid == -1) {die("fork(2) failed!\n"); }elseif ($pid > 0) {//父进程退出, 剩下子进程成为最终的独立进程exit(0); } }daemonize();sleep(1000);
Verwenden Sie den obigen Code zur Implementierung der Daemonisierung. Wenn Ihr PHP-Programm im Hintergrund ausgeführt werden muss, müssen Sie es nur einmal aufrufen, um es zu kapseln Es kann die Funktion daemonize() verwendet werden.
Hinweis: Hier erfolgt keine Umleitung der Standardeingabe und -ausgabe.
Verwandte Empfehlungen:
Dämonisierung von PHP-Programmen
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Beispiele für die Daemonisierung von PHP-Programmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!