我正在开发一个http客户端并选择php curl扩展来发出http请求。 Api需要多维json 作为参数。
$jsonData = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($jsonData))
);
$response = curl_exec($ch);
curl_close($ch);
当我使用这个片段作为单个脚本文件并尝试在php cli中它可以工作但是在laravel中它不起作用。我收到错误“超出60秒的最大执行时间。”
当我查看stackoverflow时,大多数示例使用单维 json 对象,
当我搜索上面提到的错误与“max_input_time = 60”有关但当我将其更改为120或更高时,错误消息没有改变。
我正在使用 laravel 框架,并且laravel具有与此相关的任何配置。
答案 0 :(得分:0)
您是否尝试过使用http_build_query()
代替json_encode()
?
据我所知,对php curl的json维度没有限制。 我从未使用laravel
答案 1 :(得分:0)
您可以使用PHP脚本中的以下函数覆盖PHP时间限制。
set_time_limit(int $seconds);
这应该可以解决60秒后请求超时的问题,但是,我会质疑为什么请求开始这么长时间。
为了测试API,我通常使用Google Chrome和高级REST客户端插件,这样可以制作请求并将其保存在浏览器中。 JSON在多维方面没有任何限制,因为我过去曾经使用过几层。
我的理解是POSTFIELDS期待一个数组,因此您可以将您的请求修改为POSTFIELDS:
curl_setopt($ch, CURLOPT_POSTFIELDS, 'data='.$jsonData);
对于其他功能,请参阅curl_setopt