首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
process/pool 进程池只有最后一个进程工作,其它的工作进程不干活
### 问题描述 process/pool 进程池只有最后一个进程工作,其它的工作进程不干活 ### Swoole版本,PHP版本,以及操作系统版本信息 PHP Version => 7.4.7 swoole Version => 4.4.16 ### 相关代码 ```php // \Swoole\Process::daemon(); //打开就执行结束 Process finished with exit code 0 $workerNum = 5; $pool = new \Swoole\Process\Pool($workerNum); //让每个OnWorkerStart回调都自动创建一个协程 $pool->set(['enable_coroutine' => true]); $pool->on("workerStart", function ($pool, $id) { echo $id.PHP_EOL; //打印的是01234 $server = new \Swoole\Coroutine\Http\Server("127.0.0.1", 9501, false, true); $server->handle('/', function ($request, $response) use($pool, $id) { echo $id; //多次执行 curd http://localhost:9501/时一直打印的444……,为什么不是轮询到到各子进程的id呢,即1234? }); $server->start(); }); $pool->start(); //当前进程进入 wait 状态 ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 期待:子进程内打印当前子进程id,当请求到达时,应该是轮询把请求分配到各个子进程,而非一直交给最后一个子进程处理
发布于6年前 · 0 次浏览 · 来自
提问
道长
### 问题描述 process/pool 进程池只有最后一个进程工作,其它的工作进程不干活 ### Swoole版本,PHP版本,以及操作系统版本信息 PHP Version => 7.4.7 swoole Version => 4.4.16 ### 相关代码 ```php // \Swoole\Process::daemon(); //打开就执行结束 Process finished with exit code 0 $workerNum = 5; $pool = new \Swoole\Process\Pool($workerNum); //让每个OnWorkerStart回调都自动创建一个协程 $pool->set(['enable_coroutine' => true]); $pool->on("workerStart", function ($pool, $id) { echo $id.PHP_EOL; //打印的是01234 $server = new \Swoole\Coroutine\Http\Server("127.0.0.1", 9501, false, true); $server->handle('/', function ($request, $response) use($pool, $id) { echo $id; //多次执行 curd http://localhost:9501/时一直打印的444……,为什么不是轮询到到各子进程的id呢,即1234? }); $server->start(); }); $pool->start(); //当前进程进入 wait 状态 ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 期待:子进程内打印当前子进程id,当请求到达时,应该是轮询把请求分配到各个子进程,而非一直交给最后一个子进程处理
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2020-06-17
序冢
你这个多个进程监控同一个端口 怎么能全成功呢,你不能用同一个端口,看下错误日志估计有报错信息
赞
0
回复
2020-06-17
序冢
swoole server 本身就支持多个端口的监听,而且是标准的一个进程accpet,多个进程分发,如果需要监控多个端口建议使用swoole_server,如果希望实现一个类似进程监控的可以 用进程名字把端口配置区分开
赞
0
回复
2020-06-18
道长
 但官网就是这么写的呀,如果按照这个逻辑,那官网上的这个示例,开启五个进程,岂不是也始终都只有一个在工作,剩下的4个全部在划水了?
赞
0
回复
2021-03-25
牧
牧晨
遇到同样问题,多个worker只有一个在epoll分发,其他都是epoll_wait状态 你strace跟踪一下看看是不是和我同样的问题?
赞
0
回复