php多进程中的阻塞与非阻塞操作实例分析
网络编程 2021-07-04 23:05www.168986.cn编程入门
这篇文章主要介绍了php多进程中的阻塞与非阻塞操作,结合实例形式分析了php多进程中的阻塞与非阻塞原理、阻塞控制方法与相关操作技巧,需要的朋友可以参考下
本文实例讲述了php多进程中的阻塞与非阻塞操作。分享给大家供大家参考,具体如下:
我们通过ptl_fork来创建子进程,使用ptl_wait和ptl_waitpid来回收子进程。
子进程退出后,父进程没有及时回收,就会产生僵尸进程。
例1:
<?php define('FORK_NUMS', 5); $pids = array(); //我们创建5个子进程 for($i = 0; $i < FORK_NUMS; ++$i) { $pids[$i] = ptl_fork(); if($pids[$i] == -1) { die('fork error'); } else if ($pids[$i]) { ptl_wait($status); } else { echo getmypid() , " {$i} \r\n"; exit; } }
我们通过for循环fork出5个子进程,父进程会阻塞着等待子进程退出,然后创建下一个子进程。
上述代码输出结果如下:
20081 0
20082 1
20083 2
20084 3
20085 4
但我们创建多进程的目的,就是为了能够并行的处理任务,阻塞的方式并不是我们想看到的。
例2:
<?php define('FORK_NUMS', 5); $pids = array(); //我们创建5个子进程 for($i = 0; $i < FORK_NUMS; ++$i) { $pids[$i] = ptl_fork(); if($pids[$i] == -1) { die('fork error'); } else if ($pids[$i]) { ptl_wait($status, WNOHANG); } else { echo getmypid() , " {$i} \r\n"; exit; } }
我们可以通过设置ptl_wait的第二个参数为WNOHANG来控制进程是否阻塞。
该函数可以在没有子进程退出的情况下立刻跳出执行后续代码。
- ptl_wait等同于以pid为-1调用ptl_waitpid函数。
- ptl_waitpid函数可以等待指定pid的进程。
更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。
上一篇:php 函数中静态变量使用的问题实例分析
下一篇:php 中的信号处理操作实例详解
编程语言
- 机械手焊接机器人编程 机械手焊接设备编程
- vb数据库编程实例,vb做数据库
- tiobe世界编程语言排行榜,全球编程语言排行
- 成都java编程培训 成都it编程培训中心
- 编程基础培训,编程基础知识培训
- flash游戏编程基础教程,flash游戏开发教程
- 不会英语能学编程吗 不会英语可以学程序员吗
- 爱心代码编程C语言 爱心代码编程c语言公式
- c语言编程学习入门 c语言编程快速入门
- 西门子plc编程培训 西门子plc编程培训班
- 哪里可以学编程 台州哪里可以学编程
- 少儿编程哪个好 少儿编程哪个品牌好
- 编程是什么意思,图形编程是什么意思
- c语言编程软件下载,c语言编程软件在哪下载
- java编程软件下载,java编程下载手机版
- ug编程培训学校,ug编程培训教程