如何将curl_init调用转换为curl_multi_init

时间:2015-06-12 17:41:45

标签: php curl

我正在试图弄清楚如何从单个curl init更改连接函数以使用curl multi init。

以下是现有代码:

protected function getConnection()
{
    if (!$this->connection) {
        $this->connection = curl_init();
    }

    return $this->connection;
}

这是我尝试过的,但它没有做任何事情,甚至没有抛出错误:

protected function getConnection()
    {
 $mh = curl_multi_init();

 for($i=0; $i < 10; $i++)
 {

  {
        if (!$this->connection) {
            $this->connection[$i] = curl_init();

        }

        return $this->connection[$i];
    }

    curl_multi_add_handle($mh, $connection[$i]);

 }

  $running = 0;
    do {
        curl_multi_exec($mh, $running);
    } while ($running > 0);
}

我做错了什么?提前谢谢!

1 个答案:

答案 0 :(得分:1)

do {
    curl_multi_exec($mh, $running);
} while ($running > 0);

这是burn a lot of CPU cycles而不是做得太多。

如果句柄有效,它最终应该完成,但是我们无法看到连接是如何填充的 - 如果连接变量为false,则不清楚为什么要初始化数组值然后从方法返回。代码是否陷入循环或只是在早期的if语句中返回?如果是前者,则根据链接示例添加超时。如果后者在调用方法之前填充连接数组。