从 Guzzle 中捕获 cURL 错误

eCo*_*Evo 5 php curl guzzle

我有以下代码可以发出 Guzzle 4.1 请求:

$client = new \GuzzleHttp\Client(['defaults/headers/User-Agent' => $userAgentString]);

$retry = 0;

do {
    try {
        return $client->post($url, $options);
    } catch (\Exception $e) {
        echo $e->getMessage();
        $retry++;
        continue;
    }
} while ($retry < 3);
Run Code Online (Sandbox Code Playgroud)

它愉快地运行了很长一段时间,但在随机的时间间隔内,它有时会遇到 cURL CA 文件的问题,由于未捕获的异常而导致致命错误。我不确定我能不能做到这一点,因为我已经把它放在一个try catch街区里了。

这是取消我的 Laravel 控制台命令的错误:

cURL error 77: error setting certificate verify locations:
  CAfile: /home/vagrant/Projects/test.dev/laravel/vendor/guzzlehttp/guzzle/src/cacert.pem
  CApath: /etc/ssl/certs (0)
PHP Fatal error:  Uncaught exception 'ErrorException' with message 'include(/home/vagrant/Projects/test.dev/laravel/vendor/filp/whoops/src/Whoops/Exception/Inspector.php): failed to open stream: Too many open files' in /home/vagrant/Projects/test.dev/laravel/vendor/composer/ClassLoader.php:382
Run Code Online (Sandbox Code Playgroud)

我想要做的不仅是找出 Guzzle 收到此 cURL 错误的原因,而且还要弄清楚如果它在其他有此 cURL 问题的系统中突然出现,我该如何捕获它,这样它就不会只是使进程崩溃。