【发布时间】:2012-05-16 16:45:53
【问题描述】:
我正在使用 curl 在 while 循环中执行 someapi。如果我不执行 api 而只是回显 api 正在执行的内容,则输出很好......如果我执行那个 api,让我们在一个 while 循环中说 1000 次......它在中途给出 500 内部服务器错误。
我希望 api 应该一个接一个地执行(同步),如果它得到任何错误,它应该忽略它并继续。
这是我的代码:
while($res = mysqli_fetch_array($allDetail)){
$resulter = myCurl($res['var1'],$res['var2']);
}
function myCurl($var1,$var2){
$ch = curl_init('some_api_url_with_var1_var2');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$response = curl_exec($ch);
curl_close($ch);
}
这是我第一次使用 curl,我也是 php 新手。 api返回true或json格式的任何错误,但我不想关心它,只是api继续执行
【问题讨论】:
-
是您的服务器返回 HTTP 500 吗?可能您正在使用(快速)cgi,脚本由于时间限制而终止,apache 没有收到响应,等等。在错误日志中检查“脚本头过早结束” - 如果有,就是这种情况
-
500 是由于内存使用造成的,你能帮我解决这个问题吗??
-
你可以参考这个链接
http://php.net/manual/en/function.curl-multi-init.php,用于多个curl请求调用而不是循环。