PHP7に変更して、PHP memcacheがないことでいろいろと調べながらmemcachedを導入してみました。
ただmemcachedを使った場合だけものすごく遅くなったため、対応した内容をメモで残しておくための記事です。
結論から
libmemcachedが1.0.16だったのが悪かった模様。
たしかにgithubに書いてありますね。
libmemcached version 1.0.18 or higher is recommended for best performance and compatibility with memcached servers
バージョンをあげれば大丈夫だったみたいですが、ちょっと大変だったためメモを残しておきたかった感じです。
これがわかるのに1日以上かかったのはきつかったですね。
環境
- CentOS7
- Nginx
- PHP7
- memcached
php-memcached
php7 にはmemcacheがないらしく、有志の方たちが対応してくれたライブラリであるmemcachedを利用しています。
「PHP7にmemcachedを導入」についてはいろいろな方がやっていたので、しらべたらすぐにわかると思います。
今回はlibmemcached のコンパイル、インストール。そしてphp-memcachedでのDynamic Linkがlibmemcached 1.0.18になっていることが目的です。
libmemcached
cd /usr/local/src/ wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz tar xzf libmemcached-1.0.18.tar.gz cd libmemcached-1.0.18 ./configure make make install
自分の環境ではgcc-c++がはいっていなかったためyumで先にインストールする必要がありましたが、インストール自体は難しくはありませんでした。
php-memcachedコンパイル
cd /usr/local/src git clone -b php7 https://github.com/php-memcached-dev/php-memcached.git cd php-memcached phpize ./configure --with-libmemcached-dir=/usr/local/ make make install
反映されているかの確認
PHPで利用する場合はphp.iniにてmemcached.soをよみこんでいるはずのため、phpinfoからバージョンが確認できます。
phpinfoでみたときにmemcached versionが「1.0.18」になっていれば大丈夫だと思います。
個人環境ではこれで早くなりました。
発生したときは正直検討が付かない部分でしたが、実際にその状況になるとこういう場合もあるのかとちょっと困惑しました。
やっぱり難しいですね。