Web アプリケーションの開発プロセスでは、通常、ファイルのアップロード、レポートの生成など、より時間のかかる操作を実行する必要が生じます。これらの操作の実行には数十秒、場合によっては数分かかる場合がありますが、デフォルトでは PHP スクリプトの実行時間には制限があり、制限を超えると「最大実行時間を超過しました (タイムアウト)」というエラーがスローされます。では、PHP スクリプトのタイムアウトを変更するにはどうすればよいでしょうか?
PHP のデフォルトのタイムアウトは 30 秒です。つまり、スクリプトの実行時間が 30 秒を超えると、PHP エンジンはスクリプトの実行を自動的に終了し、「最大実行時間を超えました」エラーをスローします。この時間制限は、さまざまなサーバー設定、PHP バージョン、および PHP.ini の構成によって影響されます。ここでは、PHPスクリプトのタイムアウトを変更する方法を説明します。
PHP スクリプトでのタイムアウトの変更
PHP スクリプトでのタイムアウトは、ini_set() 関数を使用して動的に変更できます。この関数は、php.ini の構成パラメータを動的に変更するために使用されます。したがって、ini_set() 関数を使用してタイムアウト設定パラメータを変更できます。
ini_set('max_execution_time', 60);
上記のコードは、スクリプトのタイムアウトを 60 秒に設定します。これは、スクリプトの実行時間が 60 秒を超えることができないことを意味します。60 秒を超えると、「最大実行時間を超えました」エラーが表示されます。
もちろん、このコードを PHP ファイルの先頭に配置して、実行時にファイル全体が影響を受けるようにすることもできます。ただし、PHP 構成ファイル (php.ini) に対応する制限がある場合、この方法ではタイムアウトを変更できないことに注意してください。
php.ini ファイルでタイムアウトを変更する
php.ini ファイルで、max_execution_time 構成パラメータを変更することで、PHP スクリプトのタイムアウトを変更できます。このパラメータは秒単位で測定され、より長い数値に設定すると、より長い操作をサポートできます。次の手順に従ってください:
php.ini ファイルを見つけて開きます (通常は /etc/php.ini または /etc/php7/php.ini にあります)。
max_execution_time = 30 を探します。30 はデフォルトの実行時間です。
max_execution_time の値を希望の秒数に変更します (例: 5 分間の場合は 300)。
php.ini ファイルを保存します。
変更を有効にするには、Web サーバーを再起動します。
大きなファイルのアップロード時のタイムアウト問題の処理
大きなファイルのアップロードは一般的な要件ですが、通常はアップロードと処理に時間がかかるため、タイムアウトの問題が発生しやすくなります。大きなファイルをアップロードするときにタイムアウトの問題が発生する場合は、次の解決策を検討してください。
PHP スクリプトのタイムアウトを増やします。これを行うには、ini_set() 関数を使用するか、php.ini ファイルの max_execution_time 構成パラメータを変更します。
大きなファイルをアップロードする場合は、マルチパート アップロード テクノロジーを使用してください。この手法では、ファイルを小さなチャンクに分割し、1 つずつアップロードします。こうすることで、アップロードに時間がかかる場合でもタイムアウトの問題を回避できます。最新のブラウザの多くはマルチパート アップロードをサポートしています。
アップロード進行状況バーと Ajax テクノロジーを使用して、アップロードの進行状況に関するリアルタイムのフィードバックをユーザーに提供します。これにより、ユーザーはアップロードの進行状況を知ることができ、プログラムが停止したという誤った印象を避けることができます。
より高速なサーバーまたは高帯域幅のクラウド サーバーを使用します。サーバーのパフォーマンスを改善すると、ファイルのアップロードと処理にかかる時間を短縮できます。共有ホスティングを使用している場合は、VPS または専用サーバーへのアップグレードを検討してください。
結論
PHP スクリプトのタイムアウトは、Web 開発でよく遭遇する問題の 1 つです。この問題は、PHP スクリプトのタイムアウトを変更するか、php.ini ファイルの max_execution_time 構成パラメータを変更するだけで簡単に回避できます。さらに、大きなファイルのアップロードを処理する場合は、ユーザー エクスペリエンスを向上させるために、マルチパート アップロード テクノロジー、アップロードの進行状況バー、より高速なサーバーまたは大帯域幅のクラウド サーバーを使用することをお勧めします。
以上がPHP変更タイムアウトの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。