php - pcntl_fork 后 PHP 关闭连接
问题描述
我正在尝试使用不同的进程通过 api 获取一些数据以同时执行所有请求。
它工作正常,但脚本中有很多内存泄漏(我使用共享内存段来存储每个进程获取的结果)
我用来创建共享内存段的代码如下所示(我只是放了对理解问题有用的最少代码):
for ($i = 0; $i < 6; $i++)
{
if (getmypid() == $parent_pid) {
$process_pool[] = pcntl_fork();
// Get the memory segment where the process set the status of data fetching and set it to KO
if (getmypid() == $parent_pid) {
//I am creating memory here
echo '<br>i : ' . $i . ' mypid : ' . getmypid() . '<br>';
}
}
}
这是我得到的输出:
我:0 mypid:11128
我:1个mypid:11128
我:2 mypid:11128
i:3 mypid:11128
HTTP/1.1 200 OK 主机:127.0.0.1:8000 日期:星期一,2018 年 12 月 10 日 11:07:31 +0000 连接:关闭 X-Powered-By:PHP/7.2.2 内容类型:文本/html;charset=UTF-8 HTTP/1.1 200 OK 主机:127.0.0.1:8000 日期:星期一,2018 年 12 月 10 日 11:07:31 +0000 连接:关闭 X-Powered-By:PHP/7.2.2 内容类型:文本/html; charset=UTF-8
i : 0 mypid : 11128i:1 mypid:11128
HTTP/1.1 200 OK 主机:127.0.0.1:8000 日期:星期一,2018 年 12 月 10 日 11:07:34 +0000 连接:关闭 X-Powered-By:PHP/7.2.2 内容类型:文本/html;charset=UTF-8
i : 0 mypid : 11128我:1个mypid:11128
我:2 mypid:11128
我:3 mypid:11128
i:4 mypid:11128
HTTP/1.1 200 OK 主机:127.0.0.1:8000 日期:星期一,2018 年 12 月 10 日 11:07:34 +0000 连接:关闭 X-Powered-By:PHP/7.2.2 内容类型:文本/html;charset=UTF-8
i:0 mypid:11128
HTTP/1.1 200 OK 主机:127.0.0.1:8000 日期:2018 年 12 月 10 日星期一 11:07:34 +0000 连接:关闭 X-Powered-By:PHP/7.2。 2 内容类型:text/html;charset=UTF-8
i : 0 mypid : 11128我:1个mypid:11128
i:2 mypid:11128
HTTP/1.1 200 OK 主机:127.0.0.1:8000 日期:星期一,2018 年 12 月 10 日 11:07:34 +0000 连接:关闭 X-Powered-By:PHP/7.2.2 内容类型:文本/html;charset=UTF-8
i : 0 mypid : 11128我:1个mypid:11128
我:2 mypid:11128
我:3 mypid:11128
我:4 mypid:11128
我:5 mypid:11128
很明显,问题来自连接因某种原因被关闭,这是什么,我该如何解决?
谢谢你的帮助!
解决方案
推荐阅读
- angular - Snackbar 未在 Angular 应用程序中打开
- android - 在Splashscreen Activity里面我实现了界面。如何将接口的数据发送到 Kotlin 中的多个 Activity?
- sql-server - 如果在另一个表中用作参考,则禁用表中的编辑记录
- sql-server-2017 - 对 ole db 提供程序“microsoft.ace.oledb.12.0”的临时访问已被拒绝。您必须通过链接服务器访问此提供程序
- c++ - 转发参考错误时终端进程终止
- php - 如何在不刷新页面的情况下将产品添加到购物车
- r - 在这种情况下,我的 ggplot2 代码中 y 的 geom_text 美学应该是什么?
- python - Django Formset添加两行而不是具有相同输入ID的一行
- javascript - 如何检查该对象不允许为空?
- android - 当再次调用编辑文本时,EditText 中的日期应保持其先前的值