[HTTP アクセス]
通常、私たちはさまざまな方法で HTTP にアクセスします。主に、curl、socket、file_get_contents() などのメソッドです。
相手のサーバーが応答しなかったら悲惨なことになりますが、サーバーごと強制終了することも簡単なので、http アクセス時のタイムアウトの問題も考慮する必要があります。
[CURL アクセス HTTP]
CURL は、HTTP プロトコル インターフェイスにアクセスするために一般的に使用される信頼性の高い lib ライブラリです。高いパフォーマンスといくつかの同時実行サポートを備えています。関数、等
CURL:
curl_setopt($ch, opt) は、主に次のようないくつかのタイムアウト設定を設定できます。
CURLOPT_TIMEOUT Set 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 秒です。
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']);
curl の通常の第 2 レベルのタイムアウトの使用法:
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl でミリ秒のタイムアウトが必要な場合は、次を追加する必要があります:
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L );
Or:
curl_setopt ($ch, CURLOPT_NOSIGNAL, true); ミリ秒レベルのタイムアウト設定をサポートできます
curl のミリ秒タイムアウトの例:
<?php if (!isset($_GET['foo'])) { // Client $ch = curl_init('http://example.com/'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_NOSIGNAL, 1); //注意,毫秒超时一定要设置这个 curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200); //超时毫秒,cURL 7.16.2中被加入。从PHP 5.2.3起可使用 $data = curl_exec($ch); $curl_errno = curl_errno($ch); $curl_error = curl_error($ch); curl_close($ch); if ($curl_errno > 0) { echo "cURL Error ($curl_errno): $curl_error\n"; } else { echo "Data received: $data\n"; } } else { // Server sleep(10); echo "Done."; } ?>
その他のヒント:
1. 経験によると、要約は次のとおりです: cURL バージョン >= libcurl /7.21. バージョン 0 では、ミリ秒のタイムアウトが確実に有効になることを覚えておいてください。
2.curl_multi のミリ秒タイムアウトにも問題があります。 。 1 回のアクセスでミリ秒レベルのタイムアウトがサポートされますが、複数の呼び出しが並行して行われる場合、curl_multi は不正確になります。
[ストリーム処理による HTTP へのアクセス]
また、curl では HTTP プロトコルの処理に fsockopen やファイル操作関数を使用することが多いため、これに対するタイムアウト処理も必要です。
推奨チュートリアル: PHP ビデオ チュートリアル
以上がPHPリクエストインターフェースのタイムアウトを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 中国語版
中国語版、とても使いやすい

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
