Dockerを使用してPHPのOPcacheを有効化する方法
PHPのパフォーマンスを向上させるための重要なツールの一つにOPcacheがあります。
OPcacheは、コンパイル済みのPHPスクリプトのバイトコードをメモリにキャッシュすることで、スクリプトの再実行時にコンパイルを省略し、実行速度を向上させます。
この記事では、Dockerを使用してPHPのOPcacheを有効化する方法を紹介します。
ステップ 1: Dockerfileの作成
Dockerfile
を作成してPHP-FPMとOPcacheをセットアップします。
また、カスタムのphp.ini
設定を適用するためのファイルも準備します。
|
|
ステップ 2: OPcacheの設定ファイルを作成
custom-php.ini
には、OPcacheの設定を含めます。例えば下記のように設定します。
|
|
OPcacheの設定オプションの解説
custom-php.ini
で設定した各項目の詳細について解説します。
基本設定
-
opcache.enable
1
に設定するとOPcacheが有効になります。0
に設定すると無効になります。
-
opcache.memory_consumption
- OPcacheが使用するメモリの最大量をメガバイト単位で指定します。
-
opcache.interned_strings_buffer
- PHPが内部的に使用する文字列のためのメモリ領域のサイズをメガバイト単位で指定します。
パフォーマンス設定
-
opcache.max_accelerated_files
- キャッシュできるPHPファイルの最大数を指定します。
-
opcache.validate_timestamps
1
に設定すると、PHPファイルが変更されたかどうかをチェックします。(開発環境では基本的にこちらを使用します)0
に設定すると、変更チェックを行わず、パフォーマンスが向上します。(本番環境では基本的にこちらを使用します)
-
opcache.revalidate_freq
opcache.validate_timestamps=1
の場合、PHPファイルの変更をチェックする頻度を秒単位で指定します。opcache.revalidate_freq=60
の場合、60秒ごとに更新することになります。
高度な設定
- opcache.fast_shutdown
1
に設定すると、スクリプトの実行終了時のメモリ解放処理を最適化します。
これらの設定を適切に調整することで、アプリケーションのパフォーマンスを最適化し、エンドユーザーにより良い体験を提供することが可能になります。
ステップ 3: Nginxの設定
Nginxの設定ファイルdefault.conf
を作成し、PHPのリクエストをPHP-FPMに転送するように設定します。
|
|
ステップ 4: Docker Composeの設定
docker-compose.yml
ファイルを作成して、NginxとPHP-FPMのコンテナを連携させます。
|
|
この設定では、htmlディレクトリ内のファイルがNginxとPHP-FPMの両方で共有されます。
ステップ 5: デモ用PHPスクリプトの準備
このスクリプトは、opcache_get_status()関数を使用してOPcacheの現在の設定と状態を取得し、それを整形して表示します。
OPcacheが有効であれば、キャッシュされているスクリプトの情報やキャッシュのヒット率など、詳細な情報を確認することができます。
demo.php
スクリプトはhtml
ディレクトリに配置します。
|
|
ステップ 6: 環境のビルドと起動
ここまでのステップでファイル構成は下記のようになっています。
|
|
以下のコマンドを実行して、環境をビルドし、起動します。
|
|
ステップ 7: テストの実行
ブラウザからhttp://localhost:8080/demo.php
にアクセスするか、curl
コマンドを使用してリクエストを送り、実行します。
|
|
ブラウザに下記内容が表示されれば問題なく動作しています。
|
|
opcache-guiをインストールする
ここまででopcacheの有効化に関して解説は終わりですが、opcacheを使っていると、今どのくらいのメモリを使用しているのか確認したい時があります。
そういった場合にopcache-gui
をインストールしておくととても便利です。
opcache-gui
は、PHPのOPcacheの状態を視覚的に確認できるウェブインターフェースです。
opcache-gui
を使用すると、キャッシュの状態やパフォーマンス、設定などを簡単に確認できます。
opcache-guiの主な機能
キャッシュされたスクリプトの一覧表示
どのPHPファイルがOPcacheによってキャッシュされているかを確認できます。
キャッシュの使用状況
使用中のメモリ量、キャッシュされたスクリプトの数、キャッシュヒット率(キャッシュが効いている度合い)など、キャッシュの効率を示す指標を確認できます。
キャッシュの設定値
OPcacheの設定値を確認できます。
これには、メモリ消費量の上限やキャッシュするスクリプトの最大数などが含まれます。
キャッシュのクリア
ウェブインターフェースから直接、キャッシュをクリアすることができます。
これは、キャッシュされたデータをリセットしたい場合に便利です。
opcache-guiの利用方法
GitHub
からindex.php
ファイルをダウンロードし、ウェブサーバーにアップロードします。その後、ブラウザからそのファイルにアクセスすることで、opcache-gui
を使用できます。
具体的には先ほど作成したhtml
フォルダにダウンロードしたindex.php
を配置するだけで完了です。
|
|
ブラウザからhttp://localhost:8080/index.php
にアクセスすると下記画面が表示されます。
まとめ
この記事では、Dockerを活用してPHPのOPcache
を設定し、その効果を検証する方法をステップバイステップで解説しました。
OPcache
はPHPスクリプトの実行速度を大幅に向上させることができる強力なツールであり、コンパイル済みのバイトコードをメモリにキャッシュすることで、スクリプトの再実行時のコンパイル時間を削減します。
このプロセスを通じて、アプリケーションのパフォーマンスを最適化し、エンドユーザーによりスムーズな体験を提供することが可能になります。