概要
PHPの処理を高速にする方法の一つにバイトコード(オペコード)をキャッシュする、いわゆる PHPアクセラレータを利用する方法があります。 そのPHPアクセラレータ機能を提供するのが OPcache です。 ここでは OPcache を導入して PHP の処理を高速化する方法について解説します。
アクセラレータとは?
プログラム言語には、プログラムをコンパイルをしないと動かせない Java などの言語があります。 一方 PHP や Perl などのスクリプト言語は、プログラムを書いたテキストファイルをサーバーにアップロードすればすぐにプログラムが動くという利点があります。 しかしながら、スクリプト言語は毎回呼び出される度にプログラムの解析・解釈が行われています。 コンパイル型の言語に比べてスクリプト言語は、「呼び出し毎にプログラムを解析する」点にオーバーヘッドがあると言えます。
スクリプト言語においても、ソースコードが変更されていないのであればコンピュータが解釈をし直す必要がないのではないかと考えられます。 よって、コンピュータが解析済みの「バイトコード」をキャッシュして再利用すればよく、そういう機能をアクセラレータとよびます。 PHPのアクセラレータ機能を利用することでPHPを解釈する段取りをスキップすることができ、処理が高速になると言うわけです。
OPcache とは?
PHP では OPcache というアクセラレータ機能を提供しています。 OPCache は PHP 5.5.0 で標準機能として取り込まれました。 PHP 5.2.0 〜 PHP 5.4.0 までは PECL の拡張機能という扱いでした。
OPcache のインストール
OPcache の導入方法はご利用の環境によって異なりますので、まずはどのように PHP を導入したのかを確認してください。
CentOS などを利用していて yum を利用して PHP を導入する(している)場合は、php-opcache というパッケージ名を検索してインストールすれば良いでしょう。 Remi リポジトリの PHP を導入している場合は、php71-php-opcache などのようなパッケージ名になっています。
# # 標準の yum リポジトリの PHP を導入した場合の例
# yum search php-opcache
# yum install php-opcache
# # Remiリポジトリから PHP 7.1 を導入した場合の例
# yum search php71-php-opcache
# yum install php71-php-opcache
OPcache の設定
インストールが終わったら、次は設定です。 設定ファイルもインストール方法によってファイルが異なります。 筆者の身の回りの環境では、次の場所にあります。
パス | 説明 |
---|---|
/etc/php.d/10-opcache.ini | CentOS 標準の yum リポジトリから PHP をインストールした場合 |
/etc/opt/remi/php71/php.d/10-opcache.ini | Remi リポジトリから PHP 7.1 を yum インストールした場合 |
全ての設定項目は公式ページが詳しいですが、ここでは最低限の設定項目を紹介します。
; OPCache を有効にする (0:無効, 1:有効)
opcache.enable=1
; OPCache で利用する共有メモリサイズ (MB)
opcache.memory_consumption=128
; OPcacheのハッシュテーブル(キャッシュするスクリプト)の最大数。 設定できる値は 200 〜 100000 までの値。
opcache.max_accelerated_files=4000
設定が完了したらWEBサーバーを再起動して設定を反映させましょう。
おわりに
本稿ではPHPアクセラレーターである OPcache を利用してPHPを高速化する方法について解説しました。 PHPでのシステム構築ではぜひ気にしてみてください。