一、问题描述
在使用Curl请求接口时,某种情况下,等待很长时间接口都没有返回值,导致报timeout,如下提示:
Fatalerror: Maximum executiontime of 30 seconds exceeded in D:test.php on line 35
二、解决
在curl中添加超时设置,超过设置的时限,便会结束请求。
curl_setopt($ch, CURLOPT_TIMEOUT,6);//置cURL允许执行的最长秒数
示例代码如下:
/**
* post 封装
* @param $url
* @param $args
* @return mixed|string
*/
public function requestPost($wxUrl,$data,$header="")
{
$ch = curl_init();
//设置header
if(!empty($header))
{
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
}
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
**curl_setopt($ch, CURLOPT_TIMEOUT,6);**
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_URL,$wxUrl); // url
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$dataJson = curl_exec($ch); // 返回值
curl_close($ch);
$data = json_decode($dataJson,true);
return $data;
}