PHP5.6へZend APCuをインストールする

はじめに

PHPではオペコードのキャッシュに、ver5.4まではAPC (Alternative PHP Cache)、ver5.5からはOPcacheが採用されている。
OPcacheはAPCに比べパフォーマンス面での改善が図られているが、逆にAPCでは可能だった、コードキャッシュ以外の任意のデータのキャッシュが利用できなくなっている。
代替のキャッシュ機構としてmemcachedなどを使うこともできるが、APCuを使えば、これまでのキャッシュの仕組みをそのまま使うことができる。
名前の通り、APCuはAPCのユーザーキャッシュ部分のみを抜き出したモジュールとなる。

インストール方法

インストール環境

まず、今回の環境は以下の通り。

PECLのアップデート

APCuはPECLを使ってインストールする。
そのため、まずはPECLのアップデートを行う。

$ sudo pecl channel-update pecl.php.net
Updating channel "pecl.php.net"
Update of Channel "pecl.php.net" succeeded

APCuのインストール

PECLでインストールを行うと、以下の通りエラーが出て失敗する。

$ sudo pecl install APCu
Failed to download pecl/APCu within preferred state "stable", latest release is version 4.0.7, stability "beta", use "channel://pecl.php.net/APCu-4.0.7" to install
install failed

どうやら "stable" 版はなく、 "beta" 版でのインストールが必要になるようだ。
そこで、beta版のインストールを行う。

$ sudo pecl install APCu-beta
downloading apcu-4.0.7.tgz ...
Starting to download apcu-4.0.7.tgz (118,670 bytes)
..........................done: 118,670 bytes
43 source files, building

...(中略)

Build process completed successfully
Installing '/usr/lib64/php/modules/apcu.so'
Installing '/usr/include/php/ext/apcu/apc.h'
Installing '/usr/include/php/ext/apcu/apc_api.h'
Installing '/usr/include/php/ext/apcu/apc_cache_api.h'
Installing '/usr/include/php/ext/apcu/apc_lock_api.h'
Installing '/usr/include/php/ext/apcu/apc_pool_api.h'
Installing '/usr/include/php/ext/apcu/apc_sma_api.h'
Installing '/usr/include/php/ext/apcu/apc_bin_api.h'
Installing '/usr/include/php/ext/apcu/apc_serializer.h'
install ok: channel://pecl.php.net/apcu-4.0.7
configuration option "php_ini" is not set to php.ini location
You should add "extension=apcu.so" to php.ini

無事、インストールが行われた。

設定ファイルの追加

インストール時に表示されたメッセージに従い、.iniのスキャンディレクトリに設定ファイル apcu.ini を設置する。
スキャンディレクトリはphpinfoで確認できる。
f:id:nao_bamboo:20150914151054p:plain

apcu.iniの記述内容は以下の通り。

extension=apcu.so
apc.shm_size=32M

確認

phpinfoを見ると、インストールされたことが確認出来る。
f:id:nao_bamboo:20150914151153p:plain