我试图通过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>';
}
}
}
这是我得到的输出:
i:0 mypid:11128 i:1 mypid:11128 i: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内容类型:text / 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内容类型:text / HTML; charset = UTF-8 i:0 mypid:11128 i:1 mypid:11128 HTTP / 1.1 200 OK Host:127.0.0.1:8000 Date:Mon,10 Dec 2018 11:07:34 0000 Connection:close X-Powered-By :PHP / 7.2.2内容类型:text / html; charset = UTF-8 i:0 mypid:11128 i:1 mypid:11128 i:2 mypid:11128 i:3 mypid:11128 i:4 mypid:11128 HTTP / 1.1 200 OK主持人:127.0.0.1:8000日期:星期一,201年12月10日11:07:34 0000连接:关闭X-Powered-By:PHP / 7.2.2内容类型:text / html; charset = UTF-8 i:0 mypid:11128 HTTP / 1.1 200 OK Host:127.0.0.1:8000 Date:Mon,10 Dec 2018 11:07:34 0000 Connection:close X-Powered-By:PHP / 7.2.2内容类型:text / html; charset = UTF-8 i:0 mypid:11128 i:1 mypid:11128 i:2 mypid:11128 HTTP / 1.1 200 OK主机:127.0.0.1:8000日期:星期一,2018年12月10日11:07:34 0000连接: close X-Powered-By:PHP / 7.2.2 Content-type:text / html; charset = UTF-8 i:0 mypid:11128 i:1 mypid:11128 i:2 mypid:11128 i:3 mypid:11128 i:4 mypid:11128 i:5 mypid:11128
很明显,问题来自连接因任何原因被关闭,这是什么以及如何解决?
谢谢你的帮助!