最好通过例子来解释:
public function runRequest()
{
$ch = curl_init();
//.... Set Curl Options ....
$response = curl_exec($ch);
if ($response === false)
throw new Exception('Boom! A feck, didnt close $ch');
curl_close($ch);
}
Run Code Online (Sandbox Code Playgroud)
只是想知道这安全吗?$ch 会被正确处理吗?
如果没有,我可以更改$ch为类变量,并在析构函数中销毁。
想法?提前致谢
$ch将超出范围,因此有资格进行垃圾收集。发生这种情况时,资源将被正确释放和关闭。至少当脚本执行结束时,所有资源都会被妥善处理。因此,没有必要手动关闭资源;但保持资源使用尽可能低是一种很好的做法,尤其是对于长时间运行的脚本。
PHP 5.5 特性try..catch..finally,即使在抛出异常的情况下,它也允许您始终关闭此类资源。(我刚刚意识到这并不真正适用于这种情况。)