在配置所有的memcached应用之前必须先准备LNMP环境(这里不再赘述LNMP的搭建)
第一种应用场景:
php的memcache扩展介绍:
php有两个memcache的扩展: php memcache 和 php memcached。 php memcache独立用php实现,是老版客户端,从我们实践中已发现有多个问题,而且功能少,属性也可设置的少;php memcached是基于原生的c的libmemcached的扩展,更加完善,建议替换为php memcached。
php memcache 扩展的缺点:
1.分布式问题
php memcache默认会自动切换实例,所以有时取到老数据,并且value飘忽不定。
2.高并发下稳定性问题
php memcache换成php memcached,在高并发下稳定下极大提高;
3.秒超时间隔没法修改问题
php memcache客户端有个1秒超时间隔没法修改问题:bool Memcache::connect ( string $host [, int $port [, int $timeout ]] )第三个参数本来可设置timeout,单位秒,但无法修改。
测试了以下三种修改timeout的方法都无效:
用memcache api Memcache::setServerParams不能修改。
改memcache 源代码vi php_memcache.h宏定义不能修改。
php.ini内这个配置:default_socket_timeout = 60对本timeout无效。
4.php memcache这个老客户端在属性设置方面可设置的很少,出错码粒度很粗,出错后难以定位,而且功能欠缺一些。
安装php的memcached扩展:
1.安装libmemcached(memcached的库)
# tar -xf libmemcached-1.0.16.tar.gz
# cd libmemcached-1.0.16
# ./configure --prefix=/usr/local/libmemcached --with-memcached
# make && make install
2.安装php memcached扩展
# tar -xf memcached-2.2.5.tgz
# cd memcached-2.2.5
# /usr/local/php/bin/phpize
# . /configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache --with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl
# make && make install
3.在/etc/php.d/目录下创建php memcached扩展的配置文件
#vim /etc/php.d/memcached.ini
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcached.so
#service php-fpm restart
4.而后对memcached功能进行测试,在网站根目录下建立测试页面test.php,添加如下内容:
<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211) or die("Could not connect");
$version = $mem->getVersion();
echo "Server‘s version: ".$version."<br/>\n";
$mem->set(‘testkey‘, ‘Hello World‘, 0, 600) or die("Failed to save data at the memcached server");
echo "Store data in the cache (data will expire in 600 seconds)<br/>\n";
$get_result = $mem->get(‘testkey‘);
echo "$get_result is from memcached server.";
?>
PS: 如果有输出“Hello World is from memcached.”等信息,则表明memcache已经能够正常工作。
安装php的memcache扩展:
PECL 简介
PECL 的全称是 The PHP Extension Community Library ,是一个开放的并通过 PEAR(PHP Extension and Application Repository,PHP 扩展和应用仓库)打包格式来打包安装的 PHP 扩展库仓库。通过 PEAR 的 Package Manager 的安装管理方式,可以对 PECL 模块进行下载和安装。与以往的多数 PEAR 包不同的是,PECL 扩展包含的是可以编译进 PHP Core 的 C 语言代码,因此可以将 PECL 扩展库编译成为可动态加载的 .so 共享库,或者采用静态编译方式与 PHP 源代码编译为一体的方法进行扩展。PECL 扩展库包含了对于 XML 解析,数据库访问,邮件解析,嵌入式的 Perl 以及 Pthyon 脚本解释器等诸多的 PHP 扩展模块,因此从某种意义上来说,在运行效率上 PECL 要高于以往诸多的 PEAR 扩展库。
pecl常用选项:
- search ###查找一下模块
- info ###查看模块信息
- install ###安装查找到的模块
1.使用pecl安装memcache模块:
# /usr/local/php/bin/pecl install memcache
# vim /etc/php.d/memcache.ini ###为php memcache 扩展提供配置文件
extension = "memcache.so"
memcache.chunk_size = 32768
# service php-fpm restart
# php -m | grep memcache ###查看php已经安装的扩展模块
2.使用pear安装memcache模块:
# wget http://pear.php.net/go-pear.phar ###下载模块
# /usr/local/php/bin/php go-pear.phar ###安装模块
# /usr/local/php/bin/pear install memcache
# service php-fpm restart
PS:Pear,Pecl都是PHP扩展模块的集合。扩展PHP有两种方法:一种是用纯粹的PHP代码写函数和类。Pear就是这样一个项目。PEAR是PHP的官方开源类库(PHP Extension and Application Repository的缩写)。Pear在英文中是梨子的意思。PEAR将PHP程序开发过程中常用的功能编写成类库,涵盖了页面呈面、数据库访问、文件操作、数据结构、缓存操作、网络协议等许多方面,用户可以很方便地使用。它是一个PHP扩展及应用的一个代码仓库,简单地说,PEAR就是PHP的cpan。其主页是pear.php.net。另外一种是用c或者c++编写外部模块加载至php中。Pecl(The PHP Extension Community Library)就是干这个事的,PHP的标准扩展,可以补充实际开发中所需的功能。所有的扩展都需要安装,在Windows下面以DLL的形式出现;在 linux下面需要单独进行编译,它的表现形式为根据PHP官方的标准用C语言写成,尽管源码开放但是一般人无法随意更改源码。其主页是 pecl.php.net。最直接的表述:Pear是PHP的上层扩展,Pecl是PHP的底层扩展。这两种方法其实都是为特定的应用提供现成的函数或者类,本质上来说都是一样的。知道上面2个区别,对于我们安装就很方便理解了。我们一般用*.so文件扩展,需要运行:pecl。一般常用的还是使用pecl扩展。