操作码介绍与缓存原理
1.当客户端请求一个php程序时,服务器的php引擎会解析到该php程序。将其编译为特定的操作码文
件,该文件是执行php程序以一种二进制的表示形式,默认情况会被php引擎执行后丢弃,而操作码
缓存是将执行后的程序保存下来,放到共享内存中,以便下次调用php的时候重新利用,避免了相
同代码的重复编译,节省了编译次数,减轻服务器负载,与cup和内存的开销。
php缓存加速软件的介绍
1.为了提高php引擎的高并发访问,以及执行速度,产生了php缓存加速软件,原理就是利用操作码
缓存,在有指定的php请求访问时,不需要在次进行编译,直接调用php操作码的缓存文件,提高
php动态处理的请求。
LAMP环境下php缓存加速器的原理
在lamp环境下Apache服务是使用libphp5.0响应处理php程序请求:
1.Apache接收到客户的php请求,根据规则进行过滤
2.Apache将php请求传递给php处理模块libphp5.0
3.php引擎定位磁盘上的php文件,并加载到内存中进行解析
4.php处理模块将php源代码编译成opcode
5.执行完之后进行缓存起来
6.当apache在次接受到请求后会直接调用缓存下来的opcode文件。
LNMP环境php缓存加速器原理
在lnmp环境中,php引擎不在使用libphp5.0 而是启用了独立的fastcgi即php-fpm进程,用来监听
nginx的php请求:
1.nginx接受客户端的php请求
2.nginx根据扩展名的过滤规则将php程序的请求传递给解析的php fastcgi进程
3.php fpm进程调用php解析器读取站点磁盘上的php文件,并加载到内存中
4.php解析器将php程序编译成opcode文件,并进行缓存下来。
5.fpm引擎执行完成后将数据饭后给nginx,在返回到客户端。
6.当nginx接受到新的php请求后php-fpm会直接读取缓存中的opcode并执行,返回数据。
php缓存加速软件:
xcache eAccelerator apc zendopcache (php官方缓存加速软件)
不管是apache还是nginx,最后都是通过php进行动态程序解析的,不管是apache的libphp5.0 还是nginx的php-fpm,最终在php引擎中优化效果是一样的,都是基于php服务(php.ini)
php缓存加速软件xcache部署
下载xcache源码包文件
1.wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.bz2
tar -xf xcache-3.2.0.tar.bz2
cd xcache-3.2.0
2.进行编译安装
phpize生成配置文件。
./configure --enable-xcache --with-php-config=/usr/bin/php-config
enable:启用xcache服务 --with-php-config :php-config文件路径,
可以通过使用 whereis php-config 查找。
3.make && make install
安装完成会生成xcache.so 文件 安装完成
配置管理Xcache
1、修改php配置文件
# vi /etc/php.ini
在底部添加如下内容
[xcache-common]
extension = /usr/lib64/php/modules/xcache.so 加载xcache模块,并指定路径
[xcache.admin]
xcache.admin.enable_auth = On 激活管理员用户和密码
xcache.admin.user = "admin"
xcache.admin.pass = "e10adc3949ba59abbe56e057f20f883e"
[xcache] 开始设置xcache缓存参数
xcache.shm_scheme = "mmap" 设置xcache如何从系统中分配内存
xcache.mmap_path = "/tmp/xcache" 缓存目录
xcache.readonly_protection = Off 启用会降低性能
xcache.size = 64M 0为禁止缓存,非0则启用
xcache.count = 1 切割成多少块,根据cpu数量
xcache.slots = 8k hash值参考值
xcache.ttl = 3600
xcache.gc_interval = 300
xcache.test = Off
xcache.readonly_protection = On
xcache.coredump_directory =""
xcache.cacher = On
xcache.stat = On
xcache.optimizer =Off
xcache.var_size = 4M 下面为变量缓存,非opcode缓存
xcache.var_count = 1
xcache.var_slots = 8k
xcache.var_gc_interval = 300
xcache.var_ttl = 0
xcache.var_maxttl = 0
[xcache.coverager]
xcache.coverager =On
xcache.coveragedump_directory ="" 是否把数据保存到指定目录
备注:xcache.count为cpu的内核数,通过cat /proc/cpuinfo查看
2、生成Xcache缓存目录
# touch /tmp/xcache
# chmod 777 /tmp/xcache
3、生成Xcache管理员的秘密(MD5密文)
# echo -n "123456" | md5sum
e10adc3949ba59abbe56e057f20f883e
然后将上述生成的MD5密文粘贴到php.ini文件中xcache.admin.pass = ""选项,xcache.admin.pass= "e10adc3949ba59abbe56e057f20f883e"
重启服务
/etc/init.d/php-fpm restart
[root@localhost html]# php -v
PHP: syntax error, unexpected '(' in /etc/php.ini on line 1846
PHP 5.6.35 (cli) (built: Mar 29 2018 07:37:47)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with XCache v3.2.0, Copyright (c) 2005-2014, by mOo
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans
with XCache Cacher v3.2.0, Copyright (c) 2005-2014, by mOo
在网站根目录编写phpinfo文件。查看xcache服务
页面管理查看xcache
1.将xcache源码中的 htdocs 目录放到网页根目录下
#cd htdocs/
#cp -r * /titi/www/html/xadmin
#重新启动php-fpm
#网页访问 http://192.168.1.251/xadmin/index.php
# 出现提示的认证的用户和密码。然后输入配置文件中所设置的用户名,和密码
#注意设置php.ini 配置文件中的时区。和访问用户名密码