我试图通过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连接:close 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连接:close X-Powered-By:PHP / 7.2.2内容类型:text / 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连接:close X-Powered-By:PHP / 7.2.2内容类型:text / html; charset = UTF-8
i:0 mypid:11128i: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日期:2018年12月10日星期一11:07:34 +0000连接:close X-Powered-By:PHP / 7.2.2内容类型:text / 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连接:close X-Powered-By:PHP / 7.2.2内容类型:text / html; charset = UTF-8
i:0 mypid:11128i: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内容类型:text / html; charset = UTF-8
i:0 mypid:11128i:1 mypid:11128
i:2 mypid:11128
i:3 mypid:11128
i:4 mypid:11128
i:5 mypid:11128
很明显,问题出在什么原因导致连接关闭,这是什么,我该如何解决?
感谢您的帮助!