runoops.com

PHP 连接 Memcached 服务

在前面章节中我们已经介绍了如何安装 Memcached 服务,接下来我们为大家介绍 PHP 如何使用 Memcached 服务。

PHP Memcache 扩展安装

PHP Memcache 扩展包下载地址:http://pecl.php.net/package/memcache,你可以下载最新稳定包(stable)。

wget http://pecl.php.net/get/memcache-2.2.7.tgz               
tar -zxvf memcache-2.2.7.tgz
cd memcache-2.2.7
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

注意:/usr/local/php/ 为php的安装路径,需要根据你安装的实际目录调整。

安装成功后会显示你的memcache.so扩展的位置,比如我的:

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

最后我们需要把这个扩展添加到php中,打开你的php.ini文件在最后添加以下内容:

[Memcache]
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
extension = memcache.so

添加完后 重新启动php,我使用的是nginx+php-fpm进程所以命令如下:

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

如果是apache的使用以下命令:

/usr/local/apache2/bin/apachectl restart

检查安装结果

/usr/local/php/bin/php -m | grep memcache

安装成功会输出:memcache。

或者通过浏览器访问 phpinfo() 函数来查看.


PHP 连接 Memcached

<?php
$memcache = new Memcache;             //创建一个memcache对象
$memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key', 'test');        //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get('key');   //从内存中取出key的值
echo $get_value;
?>

更多 PHP 操作 Memcached 请参阅: http://php.net/manual/zh/book.memcache.php

Centos 下使用 yum 命令快速安装 Memcached 与 php-memcached:

rpm qa|grep memcached //首先检查memcache是否已经安装完成
yum install  memcached //(提示你是否确认安装输入y)检查完成后执行安装命令
yum install  php-memcached //安装php的memcache的扩展
systemctl start httpd //开启apache
systemctl start memcached //开启memcached
setenforce 0

安装完成后可以使用 php 的 phpinfo(); 函数检查 memcache 是否安装。


PHP之memcache扩展和memcached扩展

在PHP里,如果想连接memcache服务器,需要安装扩展。PHP提供了两个扩展,一个叫memcache,一个叫memcached。下面是两者的区别:

memcached扩展的发布时间比memcache晚
memcached扩展需要依赖libmemcached,libmemcached是memcache提供的官方客户端,因此memcached扩展是libmemcached的二次封装。而memcache扩展不需依赖libmemcached
memcached扩展不支持windows系统,只支持linux。而memcache扩展两者都支持
memcahced扩展比memcache扩展拥有更多的优点,如低内存、线程安全、支持session、提供更多的方法等

使用方法上的区别

//memcache扩展
$m = new Memcache();
$m->connect('localhost', 11211);
$m->set('key', 'value', MEMCACHE_COMPRESSED, 60);
//memcached扩展
$m = new Memcached();
$m->addServer('localhost', 11211);
$m->set('key', 'value', 60);

在项目中建议使用memcached扩展。