memcache+php擴展模塊的安裝

memcache+php擴展模塊的安裝

安裝memcache
1、安裝libevent
[root@localhost libevent-2.0.19-stable]#tar -zxvf libevent-2.0.19-stable.tar.gz
cd libevent-2.0.19-stable
[root@localhost libevent-2.0.19-stable]# ./configure --prefix=/usr
[root@localhost libevent-2.0.19-stable]#make
[root@localhost libevent-2.0.19-stable]#make install

2、測試libevent是否安裝成功
[root@localhost libevent-2.0.19-stable]# ls /usr/lib |grep libevent
libevent-2.0.so.5
libevent-2.0.so.5.1.7
libevent.a
libevent_core-2.0.so.5
libevent_core-2.0.so.5.1.7
libevent_core.a
libevent_core.la
libevent_core.so
libevent_extra-2.0.so.5
libevent_extra-2.0.so.5.1.7
libevent_extra.a
libevent_extra.la
libevent_extra.so
libevent.la
libevent_openssl-2.0.so.5
libevent_openssl-2.0.so.5.1.7
libevent_openssl.a
libevent_openssl.la
libevent_openssl.so
libevent_pthreads-2.0.so.5
libevent_pthreads-2.0.so.5.1.7
libevent_pthreads.a
libevent_pthreads.la
libevent_pthreads.so
libevent.so

3、安裝memcache
[root@localhost mem]# tar -zxvf memcached-1.2.2.tar.gz
[root@localhost mem]# cd memcached-1.2.2
[root@localhost memcached-1.2.2]# ./configure --with-libevent=/usr
[root@localhost memcached-1.2.2]# make
make  all-recursive
make[1]: Entering directory `/home/mem/memcached-1.2.2'
Making all in doc
make[2]: Entering directory `/home/mem/memcached-1.2.2/doc'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/mem/memcached-1.2.2/doc'
make[2]: Entering directory `/home/mem/memcached-1.2.2'
if gcc -DHAVE_CONFIG_H -I. -I. -I.  -DNDEBUG -I/usr/include   -g -O2 -MT memcached-memcached.o -MD -MP -MF ".deps/memcached-memcached.Tpo" \
          -c -o memcached-memcached.o `test -f 'memcached.c' || echo './'`memcached.c; \
        then mv -f ".deps/memcached-memcached.Tpo" ".deps/memcached-memcached.Po"; \
        else rm -f ".deps/memcached-memcached.Tpo"; exit 1; \
        fi
memcached.c: In function ‘add_iov’:
memcached.c:582: error: ‘IOV_MAX’ undeclared (first use in this function)
memcached.c:582: error: (Each undeclared identifier is reported only once
memcached.c:582: error: for each function it appears in.)
make[2]: *** [memcached-memcached.o] Error 1
make[2]: Leaving directory `/home/mem/memcached-1.2.2'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/mem/memcached-1.2.2'
make: *** [all] Error 2

(make 時出錯了)

-------------
解決方案:
[root@localhost memcached-1.2.2]# vim memcached.c

修改如下幾行
56 /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
  57 #ifndef IOV_MAX
  58 #if defined(__FreeBSD__)
  59 # define IOV_MAX 1024
  60 #endif
  61 #endif
改成
56 /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
  57 #ifndef IOV_MAX
  58 /*#if defined(__FreeBSD__)*/
  59 # define IOV_MAX 1024
  60 /*#endif*/
------------
再次編譯
[root@localhost memcached-1.2.2]# make
[root@localhost memcached-1.2.2]# make install

安裝完成後會把memcached放到 /usr/local/bin/memcached

4、測試是否成功安裝memcached:
[root@localhost memcached-1.2.2]# ls /usr/local/bin/mem*
/usr/local/bin/memcached  /usr/local/bin/memcached-debug


---------------------------------------------------

安裝memcache的php擴展

安裝libmemcached
[root@localhost mem]# tar -zxvf libmemcached-0.40.tar.gz
[root@localhost mem]# cd libmemcached-0.40
[root@localhost mem]# ./configure
[root@localhost mem]# make
[root@localhost mem]# make install


先安裝php,再安裝擴展包
[root@localhost mem]# tar -zxvf memcache-1.5.tgz
[root@localhost mem]# cd memcache-1.5
[root@localhost mem]#/usr/local/php/bin/phpize
[root@localhost memcache-1.5]# ./configure --enable-memcache --with-php-config=/home/web/php/bin/php-config --with-zlib-dir
[root@localhost memcache-1.5]#make
[root@localhost memcache-1.5]#make test
[root@localhost memcache-1.5]#make install

安裝完成後提示:
[root@localhost memcache-1.5]# make install
Installing shared extensions:     /home/web/php/lib/php/extensions/no-debug-non-zts-20090626/

修改php.ini
然後修改php.ini
    把extension_dir = "./"
修改爲extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/"
並添加一行 extension=memcache.so

---------------
5、測試:
啓動memcache
/usr/local/bin/memcached -d -m 10 -u root -l 10.103.20.135 -p 11211 -c 256 -P /tmp/memcached.pid

---
/usr/local/bin/memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory

如果報這個錯誤就

把/usr/local/lib 加入到/etc/ld.so.conf下
然後執行 ldconfig

---

測試代碼:
<?php
$memcache = new Memcache;
$memcache->connect('10.103.20.135',11211) or die ("Could not connect");
$version = $memcache->getVersion();
echo "Server's version: ".$version."<br/>\n";

$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)<br/>\n";
$get_result = $memcache->get('key');
echo "Data from the cache:<br/>\n";

var_dump($get_result);
?>
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章