php-memcached 2.2.0 と 3.1.4 でデータの互換性があるのか確認する
pecl/memcached
は、libmemcachedライブラリを介してmemcachedとインターフェイスするためのPHP拡張です。
https://pecl.php.net/package/memcached
PHP5系で最新版(3.1.4) をインストールしようと思ったところ、7.0.0からしかインストールができないとのエラーが発生。memcached-2.2.0であればインストール可能
root@3105494f7cac:/var/www/html# pecl install memcached pecl/memcached requires PHP (version >= 7.0.0), installed version is 5.6.40 pecl/memcached can optionally use PHP extension "igbinary" (version >= 2.0) pecl/memcached can optionally use PHP extension "msgpack" (version >= 2.0) No valid packages found install failed
逆に、memcached-2.2.0 はPHP7系ではインストールできませんでした。
pecl/memcached requires PHP (version >= 5.2.0, version <= 6.0.0, excluded versions: 6.0.0), installed version is 7.3.10 No valid packages found install failed
READMEにもバッチリ書いてありました。
互換性があるか検証してみる
PHP5からPHP7へバージョンアップする際に、ログインセッション引き継ぎながら動的に切り替えしたいので、memcached2,3間でデータの互換性があるかどうか簡単に検証していきます。
検証環境
docker環境を使って、PHP5.6(memcached-2.2.0), PHP7.3(memcached-3.1.4)を用意しました。
なお、igbinary
, msgpack
は入れていません。
php -i | grep igbinary igbinary support => no php -i | grep msgpack msgpack support => no
libmemcached
は、1.0.18
最新、
実行時設定(php.ini)はデフォルトにしています。
この環境に、 画面にアクセスしたら値をカウントアップ => Memcachedに保管 => 画面に表示するという簡単なwebアプリを乗せ、PHP5.6とPHP7.3で互いに、カウント数の書き込み・読み込みができれば、互換性があると判断します。
セッションを使うケースと、Memcached直接を使うケースで試してみます。
結果
無事問題なく、相互に読み書きができることを確認できました。
簡単な確認でしたが、ここまで
参考
https://pecl.php.net/package-changelog.php?package=memcached&release=3.1.4 https://github.com/php-memcached-dev/php-memcached#dependencies https://launchpad.net/libmemcached/+download