PHP から複数の cURL リクエストを連続して実行しています。リクエストを実行するコードは次のようになります。
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json')
);
curl_exec($ch);
error_log("curl info: " . print_r(curl_getinfo($ch), true));
curl_close($ch);
最初のリクエストですべてが正常に機能します。からのデータはcurl_getinfo
次のようになります。
[url] => http://XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[content_type] => text/html; charset=UTF-8
[http_code] => 201
[header_size] => 492
[request_size] => 145
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.336019
[namelookup_time] => 0.140008
[connect_time] => 0.17601
[pretransfer_time] => 0.17601
[size_upload] => 2632
[size_download] => 178
[speed_download] => 529
[speed_upload] => 7832
[download_content_length] => 178
[upload_content_length] => 2632
[starttransfer_time] => 0.212012
[redirect_time] => 0
ただし、2 番目の要求には約 3 秒かかります。これは に反映されてtotal_time
いますが、個々の時間値はすべて小さいです。
[url] => http://XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[content_type] => text/html; charset=UTF-8
[http_code] => 201
[header_size] => 492
[request_size] => 145
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 3.572204
[namelookup_time] => 0
[connect_time] => 0.036002
[pretransfer_time] => 0.036002
[size_upload] => 2632
[size_download] => 178
[speed_download] => 49
[speed_upload] => 736
[download_content_length] => 178
[upload_content_length] => 2632
[starttransfer_time] => 0.068004
[redirect_time] => 0
接続と転送が迅速に行われるにもかかわらず、これほど長くなる原因は何total_time
ですか? また、サーバーでこのリクエストのタイミングを記録しました (error_log と PHP を使用)。クライアントで curl_exec を呼び出してから 3 秒後まで、リクエストの開始が表示されません。クライアントからの PHP と cURL のバージョン情報は次のとおりです。
$php -v
PHP 5.2.4-2ubuntu5.14 with Suhosin-Patch 0.9.6.2 (cli) (built: Jan 12 2011 15:54:52)
$curl -V
curl 7.18.0 (x86_64-pc-linux-gnu) libcurl/7.18.0 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.1
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz