Edited at
PHPDay 15

APCがAPCuとZend OPcacheに取って代わられたワケ

More than 3 years have passed since last update.


これはなに?

古いPHPを使用しているサービスだと、5.6+にマイグレーションする際にもAPCを使いたいという要望が多い。

PHP5.5+でなぜAPCではなくZend OPcacheやAPCuを使うようになったのか?

そもそもZend OPcacheやAPCuってなんなのさ!

って説明できるようになるために調べてみました。



APCとZend OPcache/APCuの関係

APCが機能として持っている

 opecode cache機能とdata cache機能を

 

PHP 5.5+では

 opecode cache : Zend OPcache

 data cache : APCu

 

で提供するようになりました。



そうなった経緯

経緯が綺麗にまとまったサイト。

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

ざっくりまとめるとこんな感じ。


  • APC 3.1.14のopecode cache機能に深刻なバグがあり、PHPから排除された。PHP5.3が出た頃です。

その後、


  • APCはopecode cache機能を削除して、data cache機能のみを提供するAPCuとなった。

  • opecode cache機能は、Zend Optimizer+がOSS化されたもの⇨Zend OPcacheがカバー。Zend OPcacheはPHPに組み込まれた。


PHP5.5が出た頃にAPC⇨Zend OPcache/APCuの流れが加速したワケ

 

* APC最後の安定版リリース=3.1.13はPHP5.5+では動かないから。