ホームページ >バックエンド開発 >PHPの問題 >PHPでタイムアウトを設定する

PHPでタイムアウトを設定する

WBOY
WBOYオリジナル
2023-05-06 11:26:073140ブラウズ

インターネット アプリケーション シナリオのアップグレードに伴い、Web アプリケーションのパフォーマンスと信頼性の要件はますます高くなっています。 HTTP リクエストを開始するプロセス中に、ネットワークのボトルネック、サーバーの重い負荷、サードパーティ インターフェイスの応答の遅さなどの問題が必然的に発生し、リクエスト時間が長くなります。リクエスト時間が長すぎると、フロントエンド ページがフリーズし、ユーザー エクスペリエンスが低下し、さらに深刻な場合はサーバー リソースの枯渇につながる可能性があります。このため、タイムアウトの設定は非常に重要です。

この記事では、PHPでタイムアウトを設定する方法を紹介します。

タイムアウト時間の役割

タイムアウト時間は、HTTP リクエストを送信した後、サーバーが処理して応答するまで待機する最大時間を指します。この時間を超えると、リクエストは強制的に中止され、エラー メッセージが返されます。

タイムアウト設定には 2 つの意味があります。1 つは、Web サーバーの観点からは、処理時間を制限してサーバー リソースを保護し、リクエストが多すぎることによって可用性が低下するブリッジ効果を回避します。サービス全体の。一方、ユーザーの観点から見ると、タイムアウトはリクエストの待ち時間が長いことによるユーザー エクスペリエンスの低下を避けるためでもあります。リクエストが一定時間を超えると、ユーザーは何か異常が発生したのではないかと疑い始め、操作を中断することもあります。

タイムアウトのタイミング

タイムアウト時間は PHP で設定でき、さまざまな場所で定義できます。一般に、タイムアウトのタイミングには主に次のような種類があります。

接続タイムアウト

接続タイムアウトとは、HTTP 接続を確立するときに待機する時間を指します。 PHP では、fsockopen() または curl ライブラリを使用して HTTP 接続を確立できます。 fsockopen() を使用して HTTP サーバーに接続する場合、ソケット接続タイムアウトを設定できます。

$fp = fsockopen("www.example.com", 80, $errno, $errstr, 5);
if (!$fp) {
   echo "连接服务器失败: $errstr ($errno)";
} else {
   //请求处理
   fclose($fp);
}

curl ライブラリを使用して HTTP サーバーに接続する場合指定された競技時間内にターゲット サーバーに接続できない場合、接続タイムアウト エラーが発生します:

$curl = curl_init();
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); //设置连接超时时间
curl_setopt($curl, CURLOPT_TIMEOUT, 5); //设置超时时间
curl_setopt($curl, CURLOPT_URL, 'http://www.example.com');
curl_exec($curl);
curl_close($curl);

データ送信タイムアウト

データ送信タイムアウトとは、時間を指します。接続が成功した後、サーバーが応答するまで待機します。同様に、curl ライブラリを使用してタイムアウトを設定し、指定された時間内にサーバーの応答を待ち、タイムアウトになった場合にエラーをスローすることができます。

$curl = curl_init();
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); //设置连接超时时间
curl_setopt($curl, CURLOPT_TIMEOUT, 5); //设置数据传输超时时间
curl_setopt($curl, CURLOPT_URL, 'http://www.example.com');
curl_exec($curl);
curl_close($curl);

スクリプト実行タイムアウト

PHP の場合 インタプリタがプログラムを実行するときに、実行タイムアウトになると、スクリプト実行タイムアウト エラーがスローされます。デフォルトでは、PHP はスクリプトの実行を中断するまで 30 秒待機します。set_time_limit() メソッドを使用してタイムアウトを変更できます:

set_time_limit(10); //设置脚本最大执行时间为10秒钟

大量のデータを処理する必要がある場合や、実行には非常に時間がかかります。タスクを実行するときは、このメソッドを使用してタイムアウトを設定する必要がある場合があります。

概要

リクエストの長い待機時間によって引き起こされるリソースの枯渇やユーザー エクスペリエンスの低下などの問題を回避するには、PHP でタイムアウトを設定することが非常に重要です。 PHP は、接続の確立、データ送信、およびスクリプトの実行中のタイムアウトを制限できるタイムアウト設定を実装するための豊富な関数とライブラリを提供します。タイムアウト期間を設定するときは、サーバーの可用性とユーザー エクスペリエンスを確保するために、特定の状況に応じて適切なタイミングと値を選択する必要があります。

以上がPHPでタイムアウトを設定するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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