- 多进程使用
- pcntl扩展
- swoole扩展
多进程使用
怎么才能在一个php脚本中,开启多进程处理呢?这里我们可以使用2种方法(注意,本教程只适用于linux,php-cli环境)
pcntl扩展
pcntl是php官方的多进程扩展,只能在linux环境使用,例如:
<?php$num=1;$str="EasySwoole,Easy学swoole\n";$pid = pcntl_fork();//新开一个子进程,上面的变量内存将会复制一份到子进程中.这个函数,在主进程中返回子进程进程id,在子进程返回0,开启失败在主进程返回-1echo $str;//这下面的代码,将会被主进程,子进程共同执行if($pid>0){//主进程代码echo "我是主进程,子进程的pid是{$pid}\n";}elseif($pid==0){echo "我是子进程,我的pid是".getmypid()."\n";}else{echo "我是主进程,我现在慌得一批,开启子进程失败了\n";}
详细内容可自行搜索了解
swoole扩展
swoole扩展是面向生产环境的 PHP 异步网络通信引擎,它也有着进程管理模块
<?php$num = 1;$str = "EasySwoole,Easy学swoole\n";$process = new swoole_process(function () use ($str) {//实例化一个进程类,传入回调函数echo $str;//变量内存照常复制一份,只不过swoole的开启子进程后使用的是回调方法运行echo "我是子进程,我的pid是" . getmypid() . "\n";});$pid = $process->start();//开启子进程,创建成功返回子进程的PID,创建失败返回false。echo $str;if ($pid > 0) {//主进程代码echo "我是主进程,子进程的pid是{$pid}\n";}else{echo "我是主进程,我现在不慌了,失败就失败吧\n";}
详细内容可自行搜索了解
