PHP的pcntl多进程
程序员文章站
2022-03-18 12:27:24
...
PHP使用PCNTL系列的函数也能做到多进程处理一个事务。比如我需要从数据库中获取80w条的数据,再做一系列后续的处理,这个时候,用单进程?你可以等到明年今天了。。。所以应该使用pcntl函数了。 假设我想要启动20个进程,将1-80w的数据分成20份来做,主进程
PHP使用PCNTL系列的函数也能做到多进程处理一个事务。比如我需要从数据库中获取80w条的数据,再做一系列后续的处理,这个时候,用单进程?你可以等到明年今天了。。。所以应该使用pcntl函数了。
假设我想要启动20个进程,将1-80w的数据分成20份来做,主进程等待所有子进程都结束了才退出:
$max = 800000; $workers = 20; $pids = array(); for($i = 0; $i $max / $workers * $i, 'maxid' => $max / $workers * ($i+1), ); $this->executeWorker($input, $output, $param); exit; default: break; } } foreach ($pids as $i => $pid) { if($pid) { pcntl_waitpid($pid, $status); } }
这里当pcntl_fork出来以后,会返回一个pid值,这个pid在子进程中看是0,在父进程中看是子进程的pid(>0),如果pid为-1说明fork出错了。
使用一个$pids数组就可以让主进程等候所有进程完结之后再结束了
推荐阅读
-
PHP的pcntl多进程用法实例
-
以实例全面讲解PHP中多进程编程的相关函数的使用,php函数_PHP教程
-
php 多进程中的信号有关问题
-
PHP中使用Memache作为进程锁的操作类分享,phpmemache_PHP教程
-
单台服务器的PHP进程之间实现共享内存的方法_php技巧
-
PHP中PCNTL中的问题。大神请进
-
使用php完成一个用户注册以及管理的demo(php实现单文件与多文件的上传)
-
PHP5.4以上更新的伪"多继承"--trait语法,php5.4--trait_PHP教程
-
php CLI方式运行的收集数据脚本过多导致PHP进程过多,有没有好的解决方案来替换?
-
CentOS下与Apache连接的PHP多版本共存方案实现详解,_PHP教程