在 curl_init 之后抛出异常时在 PHP 中是否安全

Ang*_*.47 1 php

最好通过例子来解释:

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为类变量,并在析构函数中销毁。

想法?提前致谢

dec*_*eze 6

$ch将超出范围,因此有资格进行垃圾收集。发生这种情况时,资源将被正确释放和关闭。至少当脚本执行结束时,所有资源都会被妥善处理。因此,没有必要手动关闭资源;但保持资源使用尽可能低是一种很好的做法,尤其是对于长时间运行的脚本。

PHP 5.5 特性try..catch..finally,即使在抛出异常的情况下,它也允许您始终关闭此类资源。(我刚刚意识到这并不真正适用于这种情况。)