PHP在pcntl_fork之后关闭连接

时间:2018-12-10 11:14:32

标签: php multiprocessing

我试图通过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:11128

     

i: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: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日期: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: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内容类型: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

很明显,问题出在什么原因导致连接关闭,这是什么,我该如何解决?

感谢您的帮助!

0 个答案:

没有答案