ホームページ  >  記事  >  バックエンド開発  >  PHPのcurlタイムアウト設定の詳しい説明

PHPのcurlタイムアウト設定の詳しい説明

WBOY
WBOYオリジナル
2016-07-25 08:52:231303ブラウズ
PHPでcurlを使用する際のタイムアウトの設定方法を詳しく紹介していますので、参考になれば幸いです。

HTTP にアクセスするには多くの方法があり、curl、socket、file_get_contents() などのメソッドを使用できます。

http にアクセスする場合は、タイムアウトの問題を考慮する必要があります。

1. CURL アクセス HTTP CURL は、HTTP プロトコル インターフェイスにアクセスするためによく使用されるライブラリであり、高いパフォーマンスを備え、いくつかの同時実行サポート機能を備えています。

curl_setopt($ch, opt) は、主に次のようないくつかのタイムアウト設定を設定できます。 *(重要) CURLOPT_TIMEOUT は、cURL の実行が許可される最大秒数を設定します。 *(重要) CURLOPT_TIMEOUT_MS は、cURL が実行できる最大ミリ秒数を設定します。 (cURL 7.16.2 で追加。PHP 5.2.3 以降で利用可能)

CURLOPT_CONNECTTIMEOUT 接続を開始するまでの待機時間。0 に設定すると、無期限に待機します。 CURLOPT_CONNECTTIMEOUT_MS 接続試行を待機する時間 (ミリ秒)。 0 に設定すると、無限に待機します。 (cURL 7.16.2 で追加。PHP 5.2.3 以降で利用可能)

CURLOPT_DNS_CACHE_TIMEOUT は、DNS 情報をメモリに保存する時間を設定します。デフォルトは 120 秒です。

1、curl の通常の第 2 レベルのタイムアウト:

$ch =curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_TIMEOUT,60); //秒数を設定するだけです curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_USERAGENT, $define_vars['HTTP_USER_AGENT']);

2、curl の通常の第 2 レベルのタイムアウトの使用:

curl_setopt($ch, CURLOPT_TIMEOUT,60);

3.curl がミリ秒単位でタイムアウトする必要がある場合は、時間を増やす必要があります:

curl_easy_setopt(curl, CURLOPT_NOSIGNAL,1L); //または curl_setopt ($ch, CURLOPT_NOSIGNAL,true);// ミリ秒レベルのタイムアウト設定をサポート

curlのタイムアウト設定の例。

1、ミリ秒タイムアウトのカールの例:

リーリー

ヒント: 1. cURL バージョン >= libcurl/7.21.0 バージョンでは、ミリ秒のタイムアウトが確実に有効になります。覚えておいてください。 2.curl_multi のミリ秒レベルのタイムアウトの問題。Curl_multi の複数回の同時アクセスは不正確になります。

2. ストリーム処理経由で HTTP にアクセスする HTTP プロトコルの処理には、curl に加えて、fsockopen またはファイル操作関数がよく使用されます。 これに関するタイムアウト設定について説明しましょう。

通常、接続タイムアウトは直接設定できますが、ストリーム読み取りタイムアウトは個別に処理する必要があります。 次の実装コードを参照できます:

リーリー

または、組み込みのストリーム処理関数 stream_set_timeout() および stream_get_meta_data() を使用して次の処理を行います:

リーリー

file_get_contents タイムアウト:

リーリー

fopen タイムアウト:

りー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。