php的加速器
php的加速器:基于PHP的特殊扩展机制如opcode缓存扩展也可以将opcode缓存于php的共享内存中,从而可以让同一段代码的后续重复执行时跳过编译阶段以提高性能。这些加速器并非真正提高了opcode的运行速度,而仅是通过分析opcode后并将它们重新排列以达到快速执行的目的
常见的php加速器有:
1. APC (Alternative PHP Cache)
遵循PHP License的开源框架,PHP opcode缓存加速器,目前的版本不适用于PHP 5.4
项目地址http://pecl.php.net/package/APC
2. eAccelerator
源于Turck MMCache,早期的版本包含了一个PHP encoder和PHP loader,目前encoder已经不在支持。项目地址 http://eaccelerator.net/
3. XCache
快速而且稳定的PHP opcode缓存,经过严格测试且被大量用于生产环境。项目地址:http://xcache.lighttpd.net/,收录EPEL源
4. Zend Optimizer和Zend Guard Loader
Zend Optimizer并非一个opcode加速器,它是由Zend Technologies为PHP5.2及以前的版本提供的一个免费、闭源的PHP扩展,其能够运行由Zend Guard生成的加密的PHP代码或模糊代码。 而Zend Guard Loader则是专为PHP5.3提供的类似于Zend Optimizer功能的扩展。项目地址http://www.zend.com/en/products/guard/runtime-decoders
5. NuSphere PhpExpress
NuSphere的一款开源PHP加速器,它支持装载通过NuSphere PHP Encoder编码的PHP程序文件,并能够实现对常规PHP文件的执行加速。项目地址,http://www.nusphere.com/products/phpexpress.htm
编译Php-xcache加速访问
官网:http://xcache.lighttpd.net/wiki/ReleaseArchive
1. 安装方法
(1)rpm包:来自epel源
yum -y install php-xcache
(2) 编译安装
1. 安装环境
yum -y install php-devel gcc
- 下载并解压缩
tar xf xcache-3.2.0.tar.bz2
- phpize 生成编译环境
cd xcache-3.2.0
phpize --clean && phpize
- 编译
./configure --enable-xcache
make && make install
- 复制配置文件及重启http
cp xcache.ini /etc/php.d/
systemctl restart httpd.service
php-fpm:
CentOS 6:
PHP-5.3.2之前:默认不支持fpm机制;需要自行打补丁并编译安装
httpd-2.2:默认不支持fcgi协议,需要自行编译此模块
解决方案:编译安装httpd-2.4, php-5.3.3+
CentOS 7:
httpd-2.4:rpm包默认编译支持fcgi模块
php-fpm包:专用于将php运行于fpm模式
配置fastcgi
fcgi服务配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf
官方文档:http://php.net/manual/zh/install.fpm.configuration.php
- 连接池:
pm = static|dynamic
#static:固定数量的子进程;pm.max_children
#dynamic:子进程数量以动态模式管理,默认值
- 连接数/请求数/空闲进程数
pm.max_children = 50
pm.start_servers =5
pm.min_spare_servers =5
pm.max_spare_servers =35
pm.max_requests = 500 #每个进程可以处理的请求数
- 确保运行php-fpm进程的用户对session目录有读写权限
mkdir /var/lib/php/session
chown apache.apache /var/lib/php/session
配置fastcgi
(1) 配置httpd,添加/etc/httpd/conf.d/fcgi.conf配置文件,内容类似
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
#UDS(unix domain socket)方式
ProxyPassMatch ^/(.*\.php)$ unix:/var/run/php.sock|fcgi://localhost/app/httpd24/htdocs/$1
2) 虚拟主机配置
vim /etc/httpd/conf.d/vhosts.conf
DirectoryIndex index.php
<VirtualHost *:80>
ServerName www.b.net
DocumentRoot /apps/vhosts/b.net
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/apps/vhosts/b.net/$1
<Directory "/apps/vhosts/b.net">
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
CentOS 7安装LAMP(PHP-FPM模式)
- 安装PHP-FPM
首先要卸载PHP
[101]$ yum install php-fpm
- 查看php-fpm所对应的配置文件
[101]$ rpm -ql php-fpm
/usr/lib/systemd/system/php-fpm.service
/etc/logrotate.d/php-fpm
/etc/php-fpm.conf
/etc/php-fpm.d
/etc/php-fpm.d/www.conf
/etc/sysconfig/php-fpm
/run/php-fpm
- 配置文件
[101]$ vim /etc/php-fpm.d/www.conf
daemonize = no #是否将程序运行在后台
listen = 127.0.0.1:9000 #FPM 监听地址
listen = /var/run/php.sock #UDF模式使用
listen.mode= 0666 #UDF模式使用
listen.backlog = -1 #等待队列的长度 -1表示无限制
listen.allowed_clients = 127.0.0.1 #仅允许哪些主机访问
pm = dynamic #PM是动态运行还是静态运行
#static 固定数量的子进程,pm.max_childen
#dynamic子进程数据以动态模式管理
pm.start_servers = 30 #这个值应该是在最大空闲和最小空闲进程数之间
pm.min_spare_servers = 20 # 最小空闲
pm.max_spare_servers = 60 # 最大空间
pm.max_requests = 500 #最大请求数
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
#设置session存放位置
- 启动PHP-FPM
systemctl start php-fpm
- 安装httpd
yum install httpd
- 查看Httpd mod_fcgi模块是否加载
httpd -M | grep fcgi
proxy_fcgi_module (shared)
- 添加FCGI的配置文件
DirectoryIndex index.php
ProxyRequests off #是否开启正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
#开启FCGI反向代理,//前面的/相对于后面的/var/www/html而言,后面的$1是指前面的/(.*\.php)
- 重启Httpd:
systemctl start httpd