一文带你了解php多进程,php多进程操作实例解说
发布时间:2022-04-14 13:39:39 所属栏目:语言 来源:互联网
导读:这篇文章给大家介绍的是关于PHP的多进程操作,文本有php的多进程操作实例,具有一定的借鉴价值,有这方面学习需要的朋友可以参考。 php的多进程处理依赖于pcntl扩展,通过pcntl_fork创建子进程来进行并行处理。 ?php $pid = pcntl_fork(); if($pid == -1) {
这篇文章给大家介绍的是关于PHP的多进程操作,文本有php的多进程操作实例,具有一定的借鉴价值,有这方面学习需要的朋友可以参考。 php的多进程处理依赖于pcntl扩展,通过pcntl_fork创建子进程来进行并行处理。 <?php $pid = pcntl_fork(); if($pid == -1) { //错误处理:创建子进程失败时返回-1. die('fork error'); } else if ($pid) { //父进程会得到子进程号,所以这里是父进程执行的逻辑 echo "parent n"; //等待子进程中断,防止子进程成为僵尸进程。 pcntl_wait($status); } else { //子进程得到的$pid为0, 所以这里是子进程执行的逻辑。 echo "child n"; exit; } pcntl_fork创建了子进程,父进程和子进程都继续向下执行,而不同是父进程会获取子进程的$pid也就是$pid不为零。而子进程会获取$pid为零。通过if else语句判断$pid我们就可以在指定位置写上不同的逻辑代码。 上述代码会分别输出parent和child。那么输出的parent和child是否会有顺序之分?是父进程会先执行? 我们在父进程中通过sleep来延缓执行,看看效果。结果是,很快输出了child,等待了接近3秒后,才输出parent。所以父进程和子进程的执行是相对独立的,没有先后之分。 那么问题又来了?pcntl_wait是做什么用的?会挂起当前进程,直到子进程退出,如果子进程在调用此函数之前就已退出,此函数会立刻返回。子进程使用的资源将被释放。 (编辑:南通站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |