General server programs run in the background of the system, which is very different from ordinary interactive command line programs . There is a function daemon in glibc. Calling this function can cause the current process to leave the terminal and become a daemon process. For details, see man daemon. There is currently no such function in PHP. Of course, if you are interested, you can write a PHP extension function to implement it.
There are two ways to implement daemonization of PHP command line programs:
1. Use nohup
Copy code The code is as follows:
nohup php myprog.php > log.txt &
Daemonization is implemented here.
Execute php myprog.php alone. When ctrl c is pressed, program execution will be interrupted and the current process and child processes will be killed.
php myprog.php &, although the execution program is also run in the background, it actually relies on the terminal. When the user exits the terminal, the process will be killed.
2. Use PHP code to implement
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);
Use the above code to implement daemonization. When your PHP program needs to run in the background, you only need to call the encapsulated function daemonize() once.
Note: Redirection of standard input and output is not implemented here.
The above is the entire content of this article, I hope you all like it.