pecl上的mongodb扩展有两个,都是官方出品的,一个叫mongo,一个是mongodb

前者已经被官方废弃,不再提供稳定的更新,官方推荐使用后者,并且后者是支持php7的。

在pecl上搜索mongodb即可找到,也可以通过pecl install mongodb安装。

pecl install mongodb

 

mongo和mongodb的结构完全不同,使用方式也大相径庭,

不过官方有个php适配包,可以让mongodb看上去和mongo使用体验近似:

mongo-php-library: https://github.com/mongodb/mongo-php-library/

pecl_http: http://pecl.php.net/package/pecl_http

 

Install the php_http PHP extension on my CentOS server.

yum -y install php-pear
yum -y install php-raphf php-propro

pecl config-set php_ini /usr/local/php/etc/php.ini
pecl channel-update pecl.php.net
pecl install pecl_http

pecl install mongodb

 

在PHP.ini中加上:

extension=mongodb;

 

如果error:

openssl/evp.h: No such file or directory 说明需哟安装openssl

yum install -y openssl openssl-devel

 

解决 error: xslt-config not found

解决编译php扩展xsl时出现

error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution

的问题,只需要执行:

yum install libxslt-devel

 

CentOS 7 安装 PHP 7.0以及memcache和redis扩展

安装EPEL

EPEL 是 Extra Packages for Enterprise Linux 的缩写(EPEL),是用于 Fedora-based Red Hat Enterprise Linux (RHEL) 的一个高质量软件源,所以同时也适用于 CentOS 或者 Scientific Linux 等发行版。

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

yum -y install epel-release 

 

安装PHP 采用webtatic的编译版本

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

yum install php70w php70w-devel php70w-bcmath php70w-fpm php70w-mbstring php70w-pdo php70w-soap php70w-mysql php70w-gd

 

安装 memcached for php7

git clone https://github.com/php-memcached-dev/php-memcached.git

cd php-memcached

git checkout php7

phpize

./configure --disable-memcached-sasl

make && make install

 

add

extension=memcached.so

to php.ini

 

安装 redis for php7

git clone https://github.com/phpredis/phpredis.git

cd phpredis

git checkout php7

phpize

./configure

make && make install

 

add

extension=redis.so

to php.ini

 

 

一,为什么要装memcached扩展

memcached的1.2.4及以上增加了CAS(Check and Set)协议,对于同一key的多进行程的并发处理问题。这种情况其实根数据库很像,如果同时有几个进程对同一个表的同一数据进行更新的话,那会不会打架呢,哈哈。数据库里面可以锁定整张表,也可以锁定表里面一 行的功能,其实memcached加入的CAS根这个差不多。

php的扩展memcache,不支持cas,所以我们要装memcached扩展,memcached扩展是基于libmemcached,所以要先安装libmemcached

 

二,查看memcahced的版本信息

telnet 127.0.0.1 12000
stats
你会看到有以下信息
STAT pid 15322
STAT uptime 1885
STAT time 1279455772
STAT version 1.2.8
STAT pointer_size 32
如果版本过低,考虑重新装一下

退出telnet ,ctrl + ] 然后在按q就行了。

 

三,安装所要软件

libmemcached 官网: https://launchpad.net/libmemcached/+download

memcached 官网: http://pecl.php.net/package/memcached

memcache 官网: http://pecl.php.net/package/memcache

mongo 官网: http://pecl.php.net/package/mongo

redis 官网:http://pecl.php.net/package/redis

 

wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz

wget http://pecl.php.net/get/memcached-2.2.0.tgz

pecl 官方网站: http://pecl.php.net/package-stats.php  (推荐

memcached 官方网站: http://www.memcached.org

memcached 最新下载: http://www.memcached.org/files/memcached-1.4.34.tar.gz

 

四,安装libmemcached

tar zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached  --with-memcached
make && make install

安装要注意的问题:

1,  安装过程中不要忘了,--with-memcached,不然会提示你

checking for memcached... no
configure: error: "could not find memcached binary"

2,你的memcached是不是1.2.4以上的,如果不是会提示你

clients/ms_thread.o: In function `ms_setup_thread':
/home/zhangy/libmemcached-1.0.18/clients/ms_thread.c:225: undefined reference to `__sync_fetch_and_add_4'
clients/ms_thread.o:/home/zhangy/libmemcached-1.0.18/clients/ms_thread.c:196: more undefined references to `__sync_fetch_and_add_4' follow
collect2: ld returned 1 exit status
make[2]: *** [clients/memslap] Error 1
make[2]: Leaving directory `/home/zhangy/libmemcached-1.0.18'

解决办法是--disable-64bit CFLAGS="-O3 -march=i686",如果不用这个64位的long型数据,我想php扩展memcached,memcache也就没什么区别了,装memcached也就没什么意思了。

 

五,php的扩展memcached的安装

tar zxvf memcached-1.0.2.tar.gz
cd memcached-1.0.2
/usr/local/php/bin/phpize
./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached
./configure --prefix=/usr/local/phpmemcached  --with-memcached
make && make install

vim  /usr/local/php/lib/php.ini

加上extension=memcached.so重起一下服务就可以了

 

 

安装扩展 memcached

cd /home/data/libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached  --with-memcached
make && make install

cd /home/data/php-memcached-master
/usr/local/php/bin/phpize && ./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached/
make && make install

vim /usr/local/php/lib/php.ini
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/memcached.so    # 末尾添加扩展

/etc/init.d/php-fpm restart

 

 

参考推荐

Struggling to install PHP pecl on CentOS

Linux php7.0 安装redis和PHP扩展

LNMP(CentOS+Nginx+Mysql+PHP)服务器环境配置 (推荐

Nginx和PHP-FPM的启动、重启、停止脚本

基于libmemcached,php扩展memcached的安装

memcached 以及 php客户端 安装