PHPエラー
こちらのページでは、アプリケーションの安定性、セキュリティ、優れたパフォーマンスを確保するため、適切なタイムアウト設定とメモリ制限を行う方法をご紹介します。アプリケーションの実行中、アプリケーションのログにPHPエラーが表示されている場合、リクエストの未完了や停止によって、PHPスクリプトが無制限に実行されるのを回避したい場合などに有用です。
メモリ制限
ウェブアプリケーションサーバーのデフォルトのPHPメモリ制限は、すべてのPHPバージョンで128MBです。この制限を超えた場合、アプリケーションのランタイムログに以下のようなエラーが表示される可能性があります。
Detected 1047468200 Bytes of RAM(1047468200バイトのRAMを検出しました)
PHP memory_limit is 128M Bytes(PHPのメモリ制限は128MBです)
アプリケーションのメモリ制限を増やすには、アプリケーションのルートディレクトリに.user.iniファイルを作成し、メモリ制限の設定を追加してください。例えば、PHPのメモリ制限を256MBに増やす場合は、以下のようになります。
memory_limit = 256M
リクエスト処理タイムアウトまでの時間を引き上げる
FastCGI Process Manager(FPM)のrequest_terminate_timeout
ディレクティブにより、 スクリプトが終了したかどうかにかかわらず、ウェブサーバーがPHPスクリプトを強制終了するまでの最大実行時間を決定することができます。
これは、コーディングエラーや無限ループ、過剰な処理時間などによってPHPスクリプトが無制限に実行されるのを防ぐのに効果的です。適切なrequest_terminate_timeout
を設定することで、PHPプロセスがサーバーリソースを過剰に消費し、 サーバー全体のパフォーマンスや安定性に影響を与える可能性を防ぐことができます。
request_terminate_timeoutの値を変更する方法は次の通りです。
- リポジトリのルートディレクトリにfpm_custom.confという名前のファイルを作成し、例えば以下のような値を追加(デフォルトの単位は秒)
request_terminate_timeout = 120
- 変更をGitリポジトリにプッシュ
- MyKinsta内で「アプリケーション」>「プロセス」>「ウェブプロセス」に移動し、startコマンドの変更画面で、fpm_custom.confファイルを指定(例:
heroku-php-apache2 -F fpm_custom.conf
)
最大実行時間を引き上げる
max_execution_time
は、PHPスクリプトがサーバーによって終了させられるまでの最大実行時間を秒単位で定義します。
アプリケーションの最大実行時間を増やすには、アプリケーションのルートディレクトリに .user.iniファイルを作成し、そのファイルに最大実行時間の設定を追加します。例えば、最大実行時間を60秒にするには、以下のようになります。
max_execution_time = 60
注)Cloudflareの185秒制限により、この値は最大185秒に制限されます。
なお、max_execution_time
を変更する際は、スクリプトが実行時間前に終了しないよう、request_terminate_timeout
値も変更してください。