分享PHP-pcntl 实现多进程代码
网络编程 2021-07-05 09:10www.168986.cn编程入门
PHP可通过PCNTL扩展实现进程控制,如进程创建,信号处理,进程中断判断等。但只能在CLI模式下操作。PCNTL的信号机制是基于 ticks 机制实现的。
PHP使用PCNTL系列的函数也能做到多进程处理一个事务。比如我需要从数据库中获取80w条的数据,再做一系列后续的处理,这个时候,用单进程?你可以等到明年今天了。。。所以应该使用ptl函数了。
狼蚁网站SEO优化我们来看个实例
代码
<?php $arChildId = array(); for($i = 0; $i < 10; $i++) { $iPid = ptl_fork(); if($iPid == -1) { die('can\'t be forked.'); } if($iPid) { # 主进程逻辑 $arChildId[] = $iPid; } else { # 子进程逻辑 $iPid = posix_getpid(); # 获取子进程的ID $iSeconds = rand(5, 30); echo ' Process '. $iPid. ' was created, and Executed, and Sleep '. $iSeconds. PHP_EOL; excuteProcess($iPid, $iSeconds); exit(); } } while(count($arChildId) > 0) { foreach($arChildId as $iKey=> $iPid) { $res = ptl_waitpid($iPid, $status, WNOHANG); if($res == -1 || $res > 0) { unset($arChildId[$iKey]); echo ' Sub process: '. $iPid. ' exited with '. $status. PHP_EOL; } } } # 子进程执行的逻辑 function excuteProcess($iPid, $iSeconds) { file_put_contents('./log/'.$iPid.'.log', $iPid.PHP_EOL, FILE_APPEND); sleep($iSeconds); } ?>
运行结果
Process 16163 was created, and Executed, and Sleep 11 Process 16164 was created, and Executed, and Sleep 21 Process 16165 was created, and Executed, and Sleep 24 Process 16166 was created, and Executed, and Sleep 27 Process 16167 was created, and Executed, and Sleep 8 Process 16168 was created, and Executed, and Sleep 14 Process 16169 was created, and Executed, and Sleep 14 Process 16170 was created, and Executed, and Sleep 26 Process 16171 was created, and Executed, and Sleep 20 Process 16172 was created, and Executed, and Sleep 21 Sub process: 16167 exited with 0 Sub process: 16163 exited with 0 Sub process: 16169 exited with 0 Sub process: 16168 exited with 0 Sub process: 16171 exited with 0 Sub process: 16164 exited with 0 Sub process: 16172 exited with 0 Sub process: 16165 exited with 0 Sub process: 16170 exited with 0 Sub process: 16166 exited with 0
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程