XAMPP(ザンプ)でPHP8より実装されているJITを有効化する方法です。
XAMPPでもJITが使えるのですが、デフォルトの状態だとJITはおろか、OPcacheすらもオフになっているので、使いたい時はphp.iniを編集する必要があります。
この度XAMPPでJITを有効化してみたので手順を備忘録がてら記事にします。
手順は初心者の方にも分かりやすいように画像付きで解説していきます。
XAMPPでPHP JITを有効化する方法
事の発端はローカル環境でJITのベンチマークを測定しようと思ったことです。
その時にPHP8をインストールしたXAMPPを使ったのですが、肝心のJITコンパイラがオンになっておらず、すぐにベンチマークを試せないことが判明しました。
念のためphpinfoでJITの動作状況を確認するもJITの項目すら出てきません。
XAMPPのデフォルトの設定では、JITはおろかOPcacheすらオフなんですねぇ~。
というわけで、この度XAMPPでZend OPcacheとJITを有効化してみました。
では早速有効化手順に参りましょう・w・
XAMPPのphp.iniを編集してJITを有効化する
XAMPPでZend OPcacheとJITを有効化するのは簡単で、php.iniに有効化するためのコードを追記するだけでOKです。(JITを使うにはPHPバージョン8以上が必須)
まずXAMPPのコントロールパネルを起動します。
続いて、Apacheの「Config」ボタンをクリックし、メニューから「PHP(php.ini)」を開きましょう。(Apacheの起動状態はオンでもオフでもOK)
php.iniにコードを書き込んで保存する
XAMPPのphp.iniが開けたら、以下のコードを最終行に追記して保存すればOKです。
[opcache] zend_extension=opcache opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000 opcache.jit_buffer_size = 128M
これでXAMPPでOPcacheおよびJITを有効化することができます。
コードについては調べれば出るので割愛しますが、この設定値はXAMPPのデフォルトのものなので特に問題が無ければ変更する必要はありません。
また、上のコードはphp.ini内に元から存在しており、コメントアウトで無効化されている状態なのですが、いちいちコメントアウトを外すよりも、最終行にコードを追記する方が簡単で楽かと思います。
Windowsの場合はメモ帳でphp.iniが開くと思うので、こんな感じに追記したらphp.iniを保存して閉じましょう。
Apacheを再起動してJITの動作確認を行う
php.iniを編集したら、設定を反映させるためにApacheを再起動します。
再起動するにはXAMPPのコントロールパネルで「Stop」と「Start」を押せばOK!
これでZend OPcacheとJITが有効になっているはずですが、一応確認します。
XAMPPのコントロールパネルでApacheをStartさせてから、Shellをクリック。
Shellが起動したら以下のコマンドを入力してみます。
php -v
このコマンドを入力して“with Zend OPcache”の文字が出ればZend OPcacheが有効になっています。
# php -v
PHP 8.2.4 (cli) (built: Mar 14 2023 17:54:25) (ZTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.2.4, Copyright (c) Zend Technologies
with Zend OPcache v8.2.4, Copyright (c), by Zend Technologies
OKですね!続いてphpinfoを使ってJITがオンになっているかも確認します。
関連記事
phpinfoの作り方についてはコチラ↓
phpinfoを作成して確認するまでの手順を詳しく解説。
phpinfoを開いたら、Zend OPcacheの項目を確認します。
JITという項目を確認して「On」になっていればJITが有効になっています。
もしもここが「Disable」だとJITがオフの状態なので再確認しましょう。
もう1点。少し下に「opcache.jit_buffer_size」という項目があるので、ここが0になっていないか確認します。先ほどphp.iniで設定した128MBなのでOK!!
ポイント
opcache.jit_buffer_sizeが0だと実質JITが機能しない=オフ状態になります。
ここまで確認できればXAMPPでJITが使える状態になっています。
お疲れさまでした!あとはJITを楽しみましょう・w・
JITのベンチマーク
ここからおまけ。
XAMPPでJITが使えるようになったのでその速さを実感してみましょう!
ベンチマークの測定には定番の「マンデルブロ集合」の計算(↓)を使用します。
外部リンク
【JITベンチマーク測定のサンプルコード】
Mabdelbrot.java · GitHub
【参考】
PHP: rfc:jit
この計算をXAMPPでローカル環境に構築したサーバーで回した結果が以下です。
JIT有効化時と無効化時のベンチマーク | ||
JITオフ | JITオン | |
1回目 | 0.886127 | 0.099668 |
3回目 | 0.886790 | 0.083245 |
3回目 | 0.888258 | 0.081356 |
4回目 | 0.886036 | 0.082425 |
5回目 | 0.890894 | 0.083457 |
ローカル環境なのでPCスペックにもよりますが、JITの速さは一目瞭然。
PHP8、OPcacheオン、JITオンだとオフの時に比べて処理速度が1桁変わりました。
はっやっー!!キャッシュを使いまわすとはいえ速すぎ...。
これがやりたかったので今回XAMPPでOPcacheとJITを有効にした次第でした。
満足しました・w・
まとめ
以上、XAMPP(ザンプ)でPHPのOPcacheおよびJITコンパイラを有効化する方法でした。オンにするのは簡単でphp.iniに例のコードを書き込むだけでOKです。
JITを使って何かをテストしたい時などのお役に立てれば幸いです。
ではではこのへんで・w・