9

全て、

JSON リクエストを返す URL をリクエストする必要があります。これを行うためにPHPとCURLを使用しています。現在、リクエストとレスポンスに約 3 ~ 4 秒かかります。

以下はカールコードです

    $ch = curl_init();
    $devnull = fopen('/tmp/curlcookie.txt', 'w');

    curl_setopt($ch, CURLOPT_STDERR, $devnull);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_URL, $desturl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);

    $ret = curl_exec($ch);

    curl_close($ch);

    if ($devnull)
    {
        fclose($devnull);
    }

以下は CURL_GETINFO 配列です

Array
(
    [url] => https://xx.xx.xxx.xx/portalsite/tester
    [content_type] => application/json
    [http_code] => 200
    [header_size] => 198
    [request_size] => 835
    [filetime] => -1
    [ssl_verify_result] => 20
    [redirect_count] => 0
    [total_time] => 2.054561
    [namelookup_time] => 6.5E-5
    [connect_time] => 0.016048
    [pretransfer_time] => 0.123947
    [size_upload] => 699
    [size_download] => 46735
    [speed_download] => 22746
    [speed_upload] => 340
    [download_content_length] => 0
    [upload_content_length] => 0
    [starttransfer_time] => 1.743973
    [redirect_time] => 0
)

CURL の処理時間を短縮するにはどうすればよいですか?

ありがとう

4

3 に答える 3

4

私はそのような問題を抱えていました。wgetを使用すると高速(最大1秒)、cURLを使用するとページを取得するのに約5秒かかりました。tcpdump-ingを使用すると、cURLがDNS逆引き参照を実行しようとしていることがわかりました。サーバーに逆引きDNSが登録されていないため、速度が低下します。ローカルDNSサーバーに逆引きDNSを設定したため、cURLを使用したそのサイトへのすべての要求が非常に高速になりました。cURL設定から逆引きDNSルックアップを無効にする方法が見つかりませんでした。

私の推測は、あなたのトラフィックをスキャンして、それがとても長く待っている場所を確認することです。

于 2010-01-15T15:17:56.283 に答える
4

ほとんどの場合、サーバーが応答するのを待っているようです(starttransfer_time --pretransfer_time = 1.620026)...サーバーがデータベースまたは時間のかかる他の操作を実行している可能性がありますか?

于 2009-12-29T20:47:36.160 に答える