25次API调用后,Amazon SES失败

时间:2016-03-01 20:30:56

标签: php amazon-web-services amazon-ses

我正在使用PHP通过Amazon SES发送电子邮件。我反复调用API以发送大约1000个个性化电子邮件。但是,在每25次调用API后,我收到以下错误:

Fatal error: Uncaught exception 'Aws\Ses\Exception\SesException' with message 'Error executing "SendEmail" on "https://email.eu-west-1.amazonaws.com"; AWS HTTP error: cURL error 77: error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)' exception 'GuzzleHttp\Exception\RequestException' with message 'cURL error 77: error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)' in phar:///home/robcowen/public_html/scripts/aws.phar/GuzzleHttp/Handler/CurlFactory.php:187 Stack trace: #0 phar:///home/robcowen/public_html/scripts/aws.phar/GuzzleHttp/Handler/CurlFactory.php(150): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 phar:///home/robcowen/public_html/scripts/aws.phar/GuzzleHttp/Handler/CurlFactory.php(103): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handl in phar:///home/robcowen/public_html/scripts/aws.phar/Aws/WrappedHttpHandler.php on line 159

我在文档中找不到任何限制的参考。我试图在每个20个API调用块之后通过sleep(30)延迟我的循环,或者在每个调用之后睡眠(1)。两者都不起作用。

有人有任何想法吗?

1 个答案:

答案 0 :(得分:0)

根据我对此类错误的体验,当有多个请求通过套接字读取文件时会发生这种情况,因此在循环期间的某个时刻它无法找到证书并产生错误。

解决问题的一种不好的方法是在每次调用之前添加sleep(1),以便有时间为每个请求加载证书。

更好的解决方法是将1000个用户的json列表发送到API或使用邮件列表(我在其他提供商上执行此操作但不是SES)。一个请求,1000个用户,对于两台交互机器都更加高效和CPU友好。