PHPアクセラレーターの使い分け(APC、APCu、OPcache)

PHPアクセラレーターとはPHPを高速化するための拡張機能(プラグインのようなもの)である。

代表的なものにAPC、APCu、OPcacheなどがある。これらは対応するPHPのバージョンと機能が異なる。ポイントを表にして整理した。

PHPアクセラレーター対応するPHPのバージョン(*1)機能
APC(php_apc)PHP5.3までのPHPに同梱。

PHP5.4まで対応。

PHP5.5以降は非対応(*2)。

「コードキャッシュ機能」

「データキャッシュ機能」

OPcache(php_opcache)PHP5.4以降に同梱。

PHP5.4~5.6に対応。

「コードキャッシュ機能」のみ
APCuPHP5.5,5.6に対応。「データキャッシュ機能」のみ(*3)

(*1)ここに記載のないPHPのバージョンでも動作する可能性はある。

(*2)php_apc 3.1.14はPHP5.5に対応していたが、メモリー管理に重大なエラーがあったため公式リポジトリからは削除され入手できない。現在入手可能ん最終版であるphp_apc 3.1.13 はPHP 5.5+(以上)では動かない。5.4までは動く。

(*3)APCのコードキャッシュ機能が問題(バグ)の温床となっていたため、この部分を削除し、データキャッシュ機能のみに特化したAPCの後継版がAPCuである。

ネットをググると作成日の異なる様々な記事がヒットするが、この違いを知らないと間違った設定をする危険性があるので要注意である。

PHP5.5以降ではOPCacheとAPCuを組み合わせるのが、高速化戦略として有効と考えられる。

Windows版XAMPPではOPCacheは同梱されているが、APCuは同梱されていないため別途ダウンロードが必要である。以下から入手できる。

windows.php.net - /downloads/pecl/releases/apcu/

なおXAMPP 5.6.30で試したところVC11でコンパイルされたphp_apcu-4.0.8-5.6では動作確認できたが、VC14でコンパイルされたphp_apcu-5.1.8-7.1では動作確認できなかった(VCのバージョンの問題?)

参考

https://www.devside.net/wamp-server/installing-apc-for-php-5-5

上記記事中にはAPCuはmemcache/memcachedよりもdata cache機能では単一サーバー環境では優れているとの記述あり。

コメント