ホームページ >バックエンド開発 >PHPチュートリアル >php についてcurl は同時リクエストをサポートし、タイムアウトをミリ秒単位で制御します

php についてcurl は同時リクエストをサポートし、タイムアウトをミリ秒単位で制御します

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 12:09:231383ブラウズ

php についてカールは同時リクエストをサポートし、タイムアウトをミリ秒単位で制御します
なぜこれを行うのですか?
現在のインターフェイス サービス呼び出しでは、パフォーマンスと安定性を確保するために、すべてサードパーティを呼び出します。インターフェイス 同時実行性とタイムアウト制御を行います。

コード実装 (オンラインで見つかる既成のもの)

public static function curlMultiRequest($urls, $options = array()) {        $ch= array();        $results = array();        $mh = curl_multi_init();        foreach($urls as $key => $val) {            $ch[$key] = curl_init();            if ($options) {                curl_setopt_array($ch[$key], $options);            }            curl_setopt($ch[$key], CURLOPT_URL, $val);            curl_multi_add_handle($mh, $ch[$key]);        }        $running = null;        do {            curl_multi_exec($mh, $running);        } while ($running > 0);        // Get content and remove handles.        foreach ($ch as $key => $val) {            $results[$key] = curl_multi_getcontent($val);            curl_multi_remove_handle($mh, $val);        }        curl_multi_close($mh);        return $results;    }

メソッドの呼び出し:
$urls = [     'http://www.baidu.com',     'http://www.qq.com'      ];$opts = [  CURLOPT_HEADER => false,  CURLOPT_TIMEOUT_MS => 50,//执行脚本超时  //CURLOPT_CONNECTTIMEOUT_MS => 50,//网络选址超时  CURLOPT_RETURNTRANSFER => true,  CURLOPT_NOSIGNAL => true, //这个是设定毫秒必须设定];curlMultiRequest($urls,$opts);


メモ
1. ミリ秒のサポートは cURL 7.16.2 で追加されました。 PHP 5.2.3 以降で利用可能
2.CURLOPT_TIMEOUT_MS (CURLOPT_CONNECTTIMEOUT_MS が定義されていない場合)
if (!defined('CURLOPT_CONNECTTIMEOUT_MS')) {    define('CURLOPT_CONNECTTIMEOUT_MS', 156);}if (!defined('CURLOPT_TIMEOUT_MS')) {    define('CURLOPT_TIMEOUT_MS', 155);}



    参照:
  • http://stackoverflow.com / questions/9062798/php-curl-timeout-is-not-working
  • http://www.laruence.com/2014/01/21/2939.html
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。