Installation environment
RHEL 4
Php 5.2.6
Required software
libevent-1.4.6-stable.tar.gz (http://monkey.org/~provos/libevent/)
memcache-2.2.3.tgz (http://pecl.php.net/package/memcache)
memcached-1.2.6.tar.gz (http://www.danga.com/memcached/)
Installation configuration
1. Install libevent
# tar zxf libevent-1.4.6-stable.tar.gz
# cd libevent-1.4.6-stable
# ./configure --prefix=/usr/local/servers/libevent
# make && make install
2. Install memcached
# tar zxvf memcached-1.2.6.tar.gz
# cd memcached-1.2.6
# ./configure --prefix=/usr/local/servers/memcached --with-libevent=/usr/local/servers/libevent
# make && make install
3. Run memcached
# /usr/local/servers/memcached -d -m 128 -l localhost -p 11211 -u root
-d runs memcached in daemon mode;
-m sets the memory size that memcached can use, in M;
-l sets the monitoring IP address. If it is the local machine, this parameter usually does not need to be set;
-p sets the listening port, the default is 11211, so this parameter does not need to be set;
-u specifies user;
If you encounter problems when running memcached, the error message is as follows:
/usr/local/servers/memcached/bin/memcached: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory
Then run LD_DUBUG=libs to know the loading path of the library when memcached is started. The details are as follows:
# LD_DEBUG=libs /usr/local/servers/memcached/bin/memcached -v
10929: find library=libevent-1.4.so.2 [0]; searching
10929: search cache=/etc/ld.so.cache
10929: Search path=/lib/tls/i686/sse2:/lib/tls/i686:/lib/tls/sse2:/lib/tls:/lib/i686/sse2:/lib/i686:/lib/sse2: /lib:/usr/lib/tls/i686/sse2:/usr/lib/tls/i686:/usr/lib/tls/sse2:/usr/lib/tls:/usr/lib/i686/sse2:/usr /lib/i686:/usr/lib/sse2:/usr/lib (system search path)
10929: trying file=/lib/tls/i686/sse2/libevent-1.4.so.2
10929: trying file=/lib/tls/i686/libevent-1.4.so.2
10929: trying file=/lib/tls/sse2/libevent-1.4.so.2
10929: trying file=/lib/tls/libevent-1.4.so.2
10929: trying file=/lib/i686/sse2/libevent-1.4.so.2
10929: trying file=/lib/i686/libevent-1.4.so.2
10929: trying file=/lib/sse2/libevent-1.4.so.2
10929: trying file=/lib/libevent-1.4.so.2
10929: trying file=/usr/lib/tls/i686/sse2/libevent-1.4.so.2
10929: trying file=/usr/lib/tls/i686/libevent-1.4.so.2
10929: trying file=/usr/lib/tls/sse2/libevent-1.4.so.2
10929: trying file=/usr/lib/tls/libevent-1.4.so.2
10929: trying file=/usr/lib/i686/sse2/libevent-1.4.so.2
10929: trying file=/usr/lib/i686/libevent-1.4.so.2
10929: trying file=/usr/lib/sse2/libevent-1.4.so.2
10929: trying file=/usr/lib/libevent-1.4.so.2
10929:
Then create a link to libevent-1.4.so.2 and then run memcached:
# ln -s /usr/local/servers/libevent/lib/libevent-1.4.so.2 /lib/libevent-1.4.so.2
4. Install the php memcache extension
You can use the pecl installer that comes with php
# /usr/local/servers/php5/bin/pecl install memcache
You can also install from source
# tar zxf memcache-2.2.3.tgz
# cd memcache-2.2.3
# /usr/local/servers/php5/bin/phpize
# ./configure --enable-memcache=/usr/local/servers/memcached --with-php-config=/usr/local/servers/php5/bin/php-config --with-apxs2=/usr/sbin /apxs
# make && make inst
After installation, there will be a prompt similar to this:
Installing shared extensions: /usr/local/servers/php5/lib/php/extensions/no-debug-non-zts-20060922/
Remember this, then modify php.ini and change
extension_dir = "./"
修改为
extension_dir = "/usr/local/servers/php5/lib/php/extensions/"
并添加一行
extension="no-debug-non-zts-20060922/memcache.so"
5. 用phpinfo查看
测试模块
$memcache = new Memcache;
$memcache->connect(localhost, 12000) or die ("Could not connect");
$version = $memcache->getVersion();
echo "Servers version: ".$version."
";
$tmp_object = new stdClass;
$tmp_object->str_attr = test;
$tmp_object->int_attr = 123;
$memcache->set(key, $tmp_object, false, 10) or die ("Failed to save data at the server");
echo "Store data in the cache (data will expire in 10 seconds)
";
$get_result = $memcache->get(key);
echo "Data from the cache:
";
var_dump($get_result);
?>
显示结果:
Servers version: 1.2.6
Store data in the cache (data will expire in 10 seconds)
Data from the cache:
object(stdClass)[3] public str_attr => string test (length=4) public int_attr => int 123