PHPでJITを利用したい
- QJITを有効化するとクッソ速くなると聞いたのですが。
- A
標準で無効になってるのでサーバーのphp.iniにJITの設定を追記します。
PHP8から追加されたものですが、速度はそれほど変わりません。
PHP8.4で高速化が図られたせいか以前よりは改善してるようです。
JITとは?
Just In Timeコンパイラ。
プログラム実行時に機械語に変換、その状態のままキャッシュとして保持しておきます。
再度アクセスがあった時に、そのキャッシュを利用する事でPHPの実行速度を上げます。
ウチが利用してるXserverではデフォで無効になってますが、どこの鯖でも同じかと。
有効にしても体感的にはそれほど変わりませんが、サーバーの負荷軽減に繋がります。
JITについて
PHP8.0より追加された「OPcache」の拡張機能です。
サーバーで利用しているCPUが理解しやすい状態でキャッシュをしておき、
次回以降、同じPHPにアクセスがあった際にキャッシュを利用することで、
PHP実行時のCPU負荷の軽減やPHPの大幅な高速化を図るPHPの拡張モジュールです。エックスサーバーでは提供中の全てのサーバーで「JIT」は標準で無効になっております。
Xserver:JITについて
有効化する場合は、「php.ini直接編集」メニューより編集してください。
有効化する方法
サーバーパネルにあるPHPの設定でphp.iniを直接編集して変更します。
ちなみにAPC/OPcacheはすでに設定済みとして話を進めます。
一番下にZend Optimizerの項目があります。
そこにあるopcache.jit = onをopcache.jit = tracingに書き換えるだけです。
ちなみにtracingという値は一番高速で動作する設定だそうです。
[変更前]
[Zend Optimizer]
zend_extension = opcache.so
opcache.jit = off
[変更後]
[Zend Optimizer]
zend_extension = opcache.so
opcache.jit = tracing
ネットで調べると色々な記述が出てきますが、これが一番シンプルで無難です。
バッファ値などは自動的に設定されるので余計な事はしない方がいいです。
明示しないといけない場合もありますが、デフォのままの方がトラブルは少ないです。
動作確認
info.phpを新規作成する方法もありますが、プラグインの方がお手軽です。
ウチではphpinfo() WPを使ってますが、インスコするだけで動作状況を確認出来ます。
OPCHACEの項目を見てJITがONになっているか確認します。
さらにopchace.jitがonになっているか、opchace.jit_buffer.sizeがゼロでないか確認。
二列ありますが、左側の列が実際の値だそうです。
バッファがゼロだとopchace.jitがオンになっていても実質動作してないそうです。
サイズは大きくても小さくてもよくないのでデフォ(1G)のままにしてます。
以上、このような表示になっていればきちんと動作しています。
※コメントは最大500文字、100回まで送信できます