When running scripts on the server, some time-consuming tasks cannot be avoided, and the use of multiple processes is essential. After PHP5.5, PHP began to add multi-process elements to meet development needs.
Note
Extensions that need to be enabled to implement multiple processes: pcntl, posix. (Recommended learning: PHP video tutorial)
Multi-process programming of PHP is not supported in the Windows environment. This article is mainly developed and tested in the Linux environment
A simple structure diagram
##Main functions##pcntl_fork: Create multiple processes, two items will be returned after calling The pid of the process, 0 is the child process, greater than 0 is the parent process (the parent process gets the id of the child process, so it is greater than 0), -1 means the creation failed
$pid = $pcntlInstall ? pcntl_fork() : 0;if ($pid == -1) { //fork失败 } elseif ($pid > 0) { //父进程 ...... } elseif ($pid == 0) { //子进程 ...... }
pcntl_signal: Register a signal processing callback function, you can Capture the signal sent when the child process ends
/配合pcntl_signal使用 declare (ticks = 1); //当子进程退出时,会触发该函数,当前子进程数-1 pcntl_signal(SIGCHLD, function ($signo) { switch ($signo) { case SIGCHLD: echo $curChildPro . 'SIGCHLD', PHP_EOL; $curChildPro--; break; } });
pcntl_wait: used to pause the parent process and wait for the child process to exit
The above is the detailed content of Is php multi-process?. For more information, please follow other related articles on the PHP Chinese website!