Memcached vs Memcache? What’s different?
Setup Memcached
Để cài được Memcached server (http://memcached.org), trước
tiên ta cần phải cài thư viện libevent (http://libevent.org)
wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar xvfz
libevent-2.0.21-stable.tar.gz
cd
libevent-2.0.21-stable
./configure
&& make && make install
wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
tar xvfz
memcached-1.4.15.tar.gz
cd
memcached-1.4.15
./configure --enable-64bit --with-libevent=/usr/local/include/event/
make && make install
Trong một vài trường hợp sẽ xảy ra lỗi không tìm thấy
libevent library, cách fix:
ln -s /usr/local/lib/libevent-2.0.so.5
/usr/lib64/libevent-2.0.so.5
Start service
memcached -d -u nobody -m 256 127.0.0.1 -p 11211
Lampp là bộ cài đặt được tích hợp sẵn httpd, php, openssl,
phpmyadmin,… nhưng điểm yếu của lampp là chỉ hỗ trợ 32bit.
Vì vậy vấn đề xảy ra khi cài đặt extension memcache cho php
trong bộ Lampp trên OS x86_64 chính là architecture của php (32bit) và memcache
(64bit). Do đó chúng ta cần phải build module này từ source.
Việc compile này đã làm mình mất 2 ngày để debug và tìm ra
nguyên nhân. Cuối cùng rút ra được kinh nghiệm như sau:
Xác định version module extension API và php API.
/opt/lampp/bin/phpize –v
Output sẽ giống tương tự như thế này:
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
Việc xác định version như trên sẽ giúp ta debug được lỗi sau
khi compile memcache ở bước tiếp theo.
wget http://pecl.php.net/get/memcache-2.2.7.tgz
tar xvfz memcache-2.2.7.tgz
cd memcache-2.2.7
/opt/lampp/bin/phpize
Để có thể compile được 32bit trên 64bit chúng ta cần phải có
thư viện 32bit
yum install
glibc-devel.i686
Tiếp tục cài đặt với flag chỉ định là 32bit.
CFLAGS=-m32 CPPFLAGS=-m32 CCASFLAGS=-m32 ./configure
--enable-memcache --with-php-config=/opt/lampp/bin/php-config
make && make install
Như vậy là build đã thành công. Bây giờ ta chỉ cần load
module này vào php là xong.
vi /opt/lamp/etc/php.ini
Thêm vào trong 2 dòng sau trong phần Dynamic Extensions
extension_dir="/opt/lampp/lib/php/extensions/no-debug-non-zts-20100525"
extension=memcache.so
Restart lại httpd.
/opt/lampp/bin/httpd –k restart
Check lại trang phpinfo sẽ xuất hiện như sau: