1

http ステータス コードを取得する最速の方法は何ですか。約 10,000 件の URL をチェックするリストがあります。そして、最良の場合、15 分ごとにそれらをチェックします。だから私は単純なcurl関数を使用してそれらすべてをループするphpスクリプトを持っています。しかし、それには時間がかかりすぎます。それを改善するために私ができることはありますか?複数の URL の並列チェックについてはどうですか? PHP はいくつ管理できますか? 私はこのパフォーマンス全体に非常に慣れていません。

これは私が持っているものです:

public function getHttpStatus(array $list) {
    $list = array(…); // Array contains 10k+ urls from database.
    for($i = 0; $i < count($list); $i++) {
            $ch = $list[$i];
        curl_setopt($ch, CURLOPT_NOBODY, 1); 
        curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE); 
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($ch, CURLOPT_MAXREDIRS, 5);

        $c = curl_exec($ch); 
        $info = curl_getinfo($ch);
        echo $info['http_code'] . '<br />';
    }
}

前もって感謝します!

4

1 に答える 1

3

curl_multi_exec()- http://php.net/manual/en/function.curl-multi-exec.phpの使用を検討してください。これにより、複数のカール ハンドルを並行して処理できます。必要に応じて、私が書いた をサポートする非常に軽量な REST クライアントを使用してみてくださいcurl_multi_exec()。リンクはこちら:

https://github.com/mikecbrant/php-rest-client

ここで、このライブラリを HEAD リクエストで動作するように設定していません。応答コードのみを探している場合、実際には GET リクエストよりもはるかに効率的です。しかし、これは、そのようなユースケースをサポートするために比較的簡単に変更できるはずです。

少なくとも、この REST クライアント ライブラリは、操作方法に関する優れたサンプル コードを提供できます。curl_multi_exec()

明らかに、利用可能なハードウェアとリクエストを行っているサービスが処理できるものに基づいて、使用する必要がある同時リクエストの数をいじる必要があります。

于 2013-10-15T18:16:56.550 に答える