ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # 多进程使用 ****** 怎么才能在一个 php 脚本中,开启多进程处理呢?这里我们可以使用2种方法(注意,本教程只适用于 linux,php-cli 环境) ## pcntl 扩展 pcntl 是 php 官方的多进程扩展,只能在 linux 环境使用,例如: ```php <?php $num = 1; $str = "EasySwoole,Easy学swoole\n"; $pid = pcntl_fork(); // 新开一个子进程,上面的变量内存将会复制一份到子进程中,这个函数,在主进程中返回子进程进程id,在子进程中返回0,开启失败时在主进程返回-1 echo $str; // 这下面的代码,将会被主进程,子进程共同执行 if ($pid > 0) { // 主进程代码 echo "我是主进程,子进程的pid是{$pid}\n"; } elseif ($pid == 0) { echo "我是子进程,我的pid是" . getmypid() . "\n"; } else { echo "我是主进程,我现在慌得一批,开启子进程失败了\n"; } ``` 详细内容可自行搜索了解 <br /> ## swoole 扩展 swoole 扩展是面向生产环境的 PHP 异步网络通信引擎,它也有着进程管理模块。 ```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"; } ``` 详细内容可自行搜索了解。