当我通过 curl 将 PUT 请求 API 发送到 REST 时,我发现了奇怪的行为。如果设置参数curl_setopt($curl, CURLOPT_PUT, true),则查询,其中 CURLOPT_POSTFIELDS 不为空,则查询执行持续 1.5 分钟(好像它取决于某个超时)。如果使用参数curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT")发送相同的请求,那么查询执行将持续大约 1 秒,这是应该的。有人可以解释这些参数之间的根本区别吗?
示例代码:
$data = http_build_query(array("enable"=> 1));
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, BASE_URL .'users/2');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_PUT, true); // execution time 1.5 min
//curl_setopt ($ curl, CURLOPT_CUSTOMREQUEST, "PUT"); - execution time 1 sec
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$out = json_decode(curl_exec($curl));
curl_close($curl);
}
Run Code Online (Sandbox Code Playgroud)