php默认使用文件来存储用户会话(session),这意味着会话数据的存取都要进行硬盘的读写。内存的带宽大概为10GB/s,硬盘的读取速率为60MB/s左右,两者在性能上有着巨大的差距。如果将会话数据保存到内存中,对于负载高的站点,能带来性能提升。
memcached是一个基于内存的key-value存储引擎,能够存储任意类型的数据。php内核支持使用memcached来存储会话,我们可以通过配置来提升站点的性能。下面是php配置使用memcached的步骤:
- 安装memcached:
yum install memcached
。由于CentOS的基础源中没有memcached,运行这个命令之前应该先添加epel源或者remi源; - 配置:
vim /etc/sysconfig/memcached
,将options项更改为: options = “-l 127.0.0.1″,即只监听本地的连接; - 启动和配置重启:
service memcached start; chkconfig memcached on
- 安装php的memcached拓展:
yum install php-pecl-memcached
- 配置php:如果使用php-fpm,请编辑 php-fpm.d/www.conf文件,否则编辑 php.ini即可,找到 session.save_handler,更改为:
session.save_handler = memcached
;找到 session.save_path,更改为:session.save_path = "127.0.0.1:11211"
- 重启php-fpm:
service php-fpm restart
通过以上步骤,通过 php -i | grep session
命令可以看到session.save_path已经指向了memcached,即成功的使用了memcached来保存会话。另外也可以通过登陆memcached服务端查看:
telnet 127.0.0.1 11211 stats items
输入这两条命令,可以看到memcached中有一系列的数据,即php存放到memcached中的数据。
注意:
此处说的memcached非旧式的memcache(先前版本的memcache的服务器端程序也叫做memcached)。如果是旧式的memcache,配置项应改为:
session.save_path = "tcp://127.0.0.1:11211"