是否有必要关闭cURL连接?

时间:2014-03-22 04:08:43

标签: php curl

我在PHP中为cURL创建了一个包装函数。它的简化版本如下:

function curl_get_contents($url, $try = 1) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, '1');
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, '1'); 

    // Execute the curl session
    $output = curl_exec($ch);

    if ($output === FALSE) {
        if ($try == 1) { //Try again
            return $this->curl_get_contents($url, 2);
        } else {
            return false;
        }    
    }        
}

如您所见,如果失败,我会强制重试该功能。我需要运行curl_close()吗? PHP是否关闭脚本末尾的所有句柄?

更新

链接的问题在答案中非常模糊,并且不支持数据。我真的很感激基于可能是一个分析器的答案,该分析器显示PHP立即关闭了连接。

2 个答案:

答案 0 :(得分:8)

不,你不要 - 垃圾处理员会为你照顾它,而你自己也不需要打扰清理记忆。

手册条目"Resources"中描述了确切的答案:

  

释放资源

     

由于PHP 4的Zend引擎引入了引用计数系统,自动检测到没有更多引用的资源,它被垃圾收集器释放。因此,很少需要手动释放内存。

     

注意:持久数据库链接是此规则的一个例外。它们不会被垃圾收集器破坏。有关详细信息,请参阅持久连接部分。

答案 1 :(得分:3)

不,这确实是一个可选步骤。但是,如果您希望重复使用相同的变量并使用一组不同的选项对其进行初始化,则可能会很有用。