ホームページ  >  記事  >  バックエンド開発  >  PHPでタイムアウト待ち時間を設定する方法

PHPでタイムアウト待ち時間を設定する方法

PHPz
PHPzオリジナル
2023-03-29 11:34:413498ブラウズ

PHP を使用して開発する場合、ネットワーク リクエスト、データベース クエリ、ファイル操作などの長期的な操作を実行する必要がある場合があります。この場合、PHP のデフォルトのタイムアウトではこれらの操作を完了するのに十分ではなく、プログラムでエラーが発生する可能性があります。この問題を解決するには、PHPのタイムアウト待ち時間を設定する必要があります。

PHP のタイムアウト待ち時間とは、PHP スクリプト実行時の最大待ち時間を指し、この時間を超えると強制終了されます。デフォルトでは、PHP のタイムアウト待機時間は 30 秒ですが、php.ini ファイルを変更することで調整できます。

  1. php.ini ファイルを変更する

まず、php.ini ファイルを見つける必要があります。 Linux システムでは、php.ini は通常 /etc/php/[version]/cli/ ディレクトリにあります。 Windows システムでは、php.ini は通常、PHP インストール ディレクトリにあります。

php.ini ファイルを開いて、次の 2 つのパラメータを見つけます。

max_execution_time = 30
max_input_time = 60

そのうち、max_execution_time は PHP スクリプトの最大実行時間 (秒単位) を表します。デフォルトは 30 秒です。 max_input_time は PHP を表します。スクリプトが POST、GET、FILE などの入力データを受信するまでの最大時間 (秒単位)、デフォルトは 60 秒です。

これら 2 つのパラメータの値を必要な値に変更できます。たとえば:

max_execution_time = 60
max_input_time = 120

これにより、PHP スクリプトの最大実行時間は 60 秒になり、最大入力時間は120秒です。

  1. コードでタイムアウトを設定する

php.ini ファイルを変更することに加えて、PHP コードでタイムアウト待機時間を設定することもできます。 PHP では、set_time_limit 関数を使用してスクリプトの最大実行時間を設定できます。

たとえば、次のコードは PHP スクリプトの最大実行時間を 60 秒に設定します:

set_time_limit(60);

コード内の max_input_time パラメータを変更したい場合は、ini_set を使用できます。関数。

たとえば、次のコードは、PHP スクリプトが入力を受信するまでの最大時間を 120 秒に設定します。

ini_set('max_input_time', 120);

これらの設定は現在のスクリプトでのみ有効であることに注意してください。現在のスクリプトを終了すると、タイムアウトは php.ini ファイルで設定された値に戻ります。

  1. ignore_user_abort 関数を使用する

PHP には、クライアントの切断後も PHP スクリプトの実行を継続できるようにする関数ignore_user_abort も用意されています。この関数は、長時間実行されるスクリプトを使用する場合に非常に便利です。

たとえば、次のコードは、クライアントの切断を無視して実行を続行するように PHP スクリプトを設定します。

ignore_user_abort(true);

ignore_user_abort 関数を設定した後、クライアントが切断すると、 PHP スクリプトは実行を続けますが、クライアントに何も出力できなくなります。

概要

PHP 開発において、タイムアウトの待ち時間は非常に重要な問題であり、特定の状況に応じて設定する必要があります。 php.ini ファイルを変更したり、コード内でタイムアウト待機時間を設定したり、ignore_user_abort 関数を使用したりして、長時間実行されるスクリプトを処理することで、PHP のタイムアウト待機時間を調整できます。

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

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