更新时间:2022-01-04 15:39:17
我将告诉你一些关于解析PHP多进程编程的事情。相信朋友们也应该密切关注这个话题。现在,让我们为我的朋友们谈谈解析PHP多进程编程。边肖还收集了关于解析PHP多进程编程的相关信息。我希望你看到后会喜欢。
建议:《PHP视频教程》
PHP多进程编程
使用多个进程的优势:
1.使用多进程,内核将负责在子进程结束后回收资源。
2.使用多个进程,子进程的异常退出不会导致整个进程Thread退出。父进程仍然有机会重建进程。
3.一个常驻的主流程,只负责任务分配,逻辑比较清晰。多进程的《我们走》是用PHP实现的。
我们需要安装pcnt扩展。
Pcntl是过程控制的缩写。通常php会默认安装这个扩展。使用phpinfo函数查看扩展是否存在。
使用pcntl_fork函数创建子流程
pcntl_fork的功能是创建与当前进程相同的子进程。该子流程代码段与当前流程完全相同,但有自己的数据段。看看创建子流程的最简单方法:
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
/**
*河东
* @日期2017-04-03
*/
$ parentPid=getmypid//获取父进程id $ childPid=pcntl _ fork//创建子进程开关($ ChildPid){ 0
案例-1:
打印“未能创建子进程!”。PHP _ EOL
退出;
案例0:
打印‘我是孩子’流程。进程标识:{$ childpid} '。PHP _ eol
打破;
默认值:
打印“我是父进程进程标识:{$ parentpid},子进程标识: {$childPid}”。PHP _ EOL
}
?pcntl_fork成功调用后,一个程序变成两个程序:一个程序得到的$pid变量值为0,是一个子过程;另一个程序获得的$pid的值大于0。该值是父进程的子进程的PID。输出:
子流程回收
阻塞模式才有ps?一般我都习惯用ps aux加grep命令来查找正在运行的后台进程。STAT的一列标识每个进程的运行状态。这里我们关注状态Z:僵尸。当子进程先于父进程退出,而父进程对此不采取任何措施时,子进程将成为僵尸进程。僵尸进程占用内存不多,但是很碍眼。(别忘了他们还占着PID)
一般来说,在父进程结束之前回收死的子进程就足够了。在pcntl扩展中,有一个pcntl_wait函数等待进程结束,然后回收已完成的进程。
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
/**
*河东
* @日期2017-04-03
*/
$ parentPid=getmypid//获取父进程id $ childPid=pcntl _ fork//创建子进程开关($ ChildPid){ 0
案例-1:
打印“未能创建子进程!”。PHP _ EOL
退出;
案例0:
打印‘我是孩子’流程。进程标识:{$ childpid} '。PHP _ eol
打破;
默认值:
pcntl _ wait($ status);//父进程打印“我是父进程进程标识:{$ ParentPID},子进程标识: {$childPid}”。PHP _ EOL
非阻塞模式阻塞模式失去了多个进程的并行性。还有另一种方法可以回收已完成的子流程,并对它们进行并行处理。这是非阻塞方式。
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
/**
*河东
* @日期2017-04-03
*/
for($ I=1;$ I=5;$ I){ 0
$ pid=pcntl _ fork//创建子进程
if(!$ PID){ 0
睡眠(1);
打印“In child $ I \ n”;
出口($ I);
}
}
//pcntl_waitpid第一个参数为0,表示处理所有子进程。
while (pcntl_waitpid(0,$status)!=-1) {
$ status=pcntl _ wexit status($ status);
回应“子$状态已完成\ n”;
}如果父进程先挂起怎么办?
会发生什么?什么都不会发生。子流程仍在运行。但此时子流程会交给流程1,流程1会成为这些子流程的继父。1号流程会很好的处理这些流程的资源,完成后1号流程会自动回收资源。所以处理僵尸进程的另一个临时方法是关闭它们的父进程。
最后一点:
流程控制不能应用在Web服务器环境中,在Web服务环境中使用可能会带来意想不到的结果。-摘自PHP手册
参考:
http://www .用PHP进行黑客攻击。com/16/1/3/get-in多处理
http://www.jb51.net/article/71232.htm
http://www.laruence.com/2009/06/11/930.html
http://imhuchao.com/596.html
https://www。纯粹的韦伯。com/article/PHP-多进程-编程-预览/以上就是解析服务器端编程语言(专业超文本预处理器的缩写)多进程编程的详细内容!
来源:php中文网