欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php浅析memcache和memcached模块比较以及安装方法

程序员文章站 2022-05-02 23:18:48
1.目前大多数php环境里使用的都是不带d的memcache版本,这个版本出的比较早,是一个原生版本,完全在php框架内开发的。与之对应的带d的memcached是建立在libmemcached的基...

1.目前大多数php环境里使用的都是不带d的memcache版本,这个版本出的比较早,是一个原生版本,完全在php框架内开发的。与之对应的带d的memcached是建立在libmemcached的基础上,所以相对来说,memcached版本的功能更全一些。

2.memcache是原生实现的,支持oo和非oo两套接口并存。而memcached是使用libmemcached,只支持oo接口。

3.memcached还有个非常称赞的地方,就是flag不是在操作的时候设置了,而是有了一个统一的setoption()。memcached实现了更多的memcached协议。

4.memcached支持binary protocol,而memcache不支持。这意味着memcached会有更高的性能。不过memcached目前还不支持长连接。

memcache扩展的安装

以centos为例

https://pecl.php.net 中有php常用扩展的包

搜索memcache

php浅析memcache和memcached模块比较以及安装方法

安装过程如下所示

[root@vm_114_93_centos local]# wget https://pecl.php.net/get/memcache-3.0.8.tgz
[root@vm_114_93_centos memcache-3.0.8]# tar -zxvf memcache-3.0.8.tgz 
[root@vm_114_93_centos local]# cd memcache-3.0.8
[root@vm_114_93_centos memcache-3.0.8]# phpize
configuring for:
php api version:         20131106
zend module api no:      20131226
zend extension api no:   220131226
[root@vm_114_93_centos memcache-3.0.8]# whereis php-config                  
php-config: /usr/bin/php-config /usr/share/man/man1/php-config.1.gz
[root@vm_114_93_centos memcache-3.0.8]# ./configure --enable-memcache --with-php-config=/usr/bin/php-config --with-zlib-dir
[root@vm_114_93_centos memcache-3.0.8]# make
[root@vm_114_93_centos memcache-3.0.8]# sudo make install
installing shared extensions:     /usr/lib/php/modules/
[root@vm_114_93_centos memcache-3.0.8]# cd /usr/lib/php/modules/
[root@vm_114_93_centos modules]# ll | grep memcache
-rwxr-xr-x 1 root root  393166 oct 10 19:25 memcache.so

如果make完以后报错如下

make: *** [memcache_pool.lo] error 1

是因为没有安装zlib,执行以下命令后,重新安装

yum -y install zlib-devel

此时就可以在相关目录中看到memcache.so

在php.ini中加入以下配置:

extension=memcache.so

然后重启apache,看phpinfo中

php浅析memcache和memcached模块比较以及安装方法

至此memcache扩展安装成功。

memcached扩展安装

首先需要安装前置扩展libmemcached

到https://launchpad.net/libmemcached/+download 下载最新安装包

过程如下:

[root@vm_114_93_centos local]# wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
[root@vm_114_93_centos local]# tar -zxvf libmemcached-1.0.18.tar.gz 
[root@vm_114_93_centos local]# cd libmemcached-1.0.18
[root@vm_114_93_centos libmemcached-1.0.18]# ./configure --prefix=/usr/lib/libmemcached 
[root@vm_114_93_centos libmemcached-1.0.18]# make && make install

然后再安装php的memcached扩展,同样是在https://pecl.php.net 中下载,安装过程如下:

[root@vm_114_93_centos local]# wget https://pecl.php.net/get/memcached-2.2.0.tgz
[root@vm_114_93_centos local]# tar -zxvf memcached-2.2.0.tgz
[root@vm_114_93_centos local]# cd memcached-2.2.0
[root@vm_114_93_centos memcached-2.2.0]# phpize
configuring for:
php api version:         20131106
zend module api no:      20131226
zend extension api no:   220131226
[root@vm_114_93_centos memcached-2.2.0]# ./configure  --with-php-config=/usr/bin/php-config --with-libmemcached-dir=/usr/lib/libmemcached
[root@vm_114_93_centos memcached-2.2.0]# make
[root@vm_114_93_centos memcached-2.2.0]# make install
installing shared extensions:     /usr/lib/php/modules/
[root@vm_114_93_centos memcached-2.2.0]# cd /usr/lib/php/modules/
[root@vm_114_93_centos modules]# ll | grep memcached
-rwxr-xr-x 1 root root  274539 oct 10 19:51 memcached.so

安装时注意指定php-config以及libmemcached的路径

注:如果在./configure那串命令后,报错:

error: no, sasl.h is not available.

就需要在其后面加上 --disabled-memcached-sasl

[root@vm_114_93_centos memcached-2.2.0]# ./configure  --with-php-config=/usr/bin/php-config --with-libmemcached-dir=/usr/lib/libmemcached --disabled-memcached-sasl

安装完成后按如下步骤,添加扩展

在php.ini中加入以下配置:

extension=memcached.so

然后重启apache,看phpinfo中

php浅析memcache和memcached模块比较以及安装方法

到此memcached扩展安装完毕

补充:利用如下方式可以查看php中安装的扩展

[root@vm_114_93_centos modules]# php -m
[php modules]
bz2
calendar
core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
imap
json
libxml
mbstring
memcache
memcached
mhash
mysql
mysqli
openssl
pcntl
pcre
pdo
pdo_mysql
pdo_sqlite
phar
readline
redis
reflection
session
shmop
simplexml
sockets
spl
sqlite3
standard
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
zip
zlib

[zend modules]