执行curl_close()一次或多次之间的区别?

Eug*_*ene 9 php curl

什么时候需要关闭curl连接并释放它消耗的资源?

为什么我会问这个问题,因为我被告知,PHP垃圾收集器会完成所有这些,有时不需要关闭数据库连接或调用__destruct方法来释放资源.

从那时起,我真的开始思考我需要在哪里调用呢?目前我对这个问题很感兴趣,因为我为curl编写了一个小型库,我想了解何时需要用户curl_close()函数.

谢谢大家的讨论和解释.

T.T*_*dua 9

结果100次curl_exec (获取缓存避免的URL):

在每个循环中执行:

for ($i = 0; $i < 100; ++$i) {
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, "http://www.google.com/?rand=" . rand());
    curl_exec($c);
    curl_close($c);
}
Run Code Online (Sandbox Code Playgroud)

8.5秒

仅执行一次:

$c = curl_init();
for ($i = 0; $i < 100; ++$i) {
    curl_setopt($c, CURLOPT_URL, "http://www.google.com/?rand=" . rand());
    curl_exec($c);
}
curl_close($c);
Run Code Online (Sandbox Code Playgroud)

5.3秒


决策:习惯于在任务中始终使用最佳代码.(来源)


Oll*_*lie 5

据我所知.GC仅清除不再使用/引用的资源.当curl变量超出范围时,它将被清理.但这可能只发生在脚本完成后,或者会话被销毁时(取决于范围).

但为了安全起见,请遵循常识..当它不再需要时关闭它.

  • 如果我离开时有一扇自动关闭的门,那么不 - 我不会手动关闭它们. (20认同)
  • @Eugene - 出门后你不要关上前门吗?;) (7认同)
  • @Christian Sciberras取决于. (4认同)
  • @Christian Sciberras - 很棒的比较. (2认同)