如果超时,curl_exec()会重试吗?

时间:2015-08-03 14:46:49

标签: php curl

在我的应用程序中,我必须对Web服务进行POST调用。他们给我发了一个XML响应,基本上是说" Accepted"或"拒绝"。
上周我遇到了其中一个电话的问题:我收到了#34;拒绝"当他们的后端告诉我这个请求已被接受时回应 我告诉他们发生了什么,他们告诉我他们收到了2个请求(使用相同的ID - 我发送给他们的参数)。第一个是"拒绝",第二个是"接受"。

我调查过:在我的代码中,如果我收到了#34;拒绝"响应,我记录它,我更新我的数据库,以及它。 我不再试一次。

唯一的功能是PHP curl功能 问题发生的那天,网络服务花了不寻常的长时间来响应(20秒) 可以curl拨打多个电话吗? PHP功能中没有retry选项(或者我找不到它),但我宁愿请问这里确定。

这是我的卷曲代码。

$ch = curl_init();

$myArrayWithDatas = array( '...' );
$httpQueryFields = http_build_query($myArrayWithDatas);

$url = "https://www.webservice.com/api";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $httpQueryFields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

if (empty($response)) {
    // I log an error
    // (no trace of that in my logs)
} else {
    // I log the XML response
    // (one "Refused" response logged)
}

curl_close($ch);

是否有任何情况下此代码可以向$url发送2个或更多请求?

1 个答案:

答案 0 :(得分:1)

curl_exec只会进行1次通话。

您是通过cron作业还是计划任务运行代码?如果是这种情况,也许您的代码已经启动了两次,这可以解释为什么有两个调用完成。