LAMP(三)_php加速器

By | 2019年 11月 23日

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
  1. 下载并解压缩
tar xf xcache-3.2.0.tar.bz2
  1. phpize 生成编译环境
cd xcache-3.2.0
phpize --clean && phpize
  1. 编译
./configure --enable-xcache
make && make install
  1. 复制配置文件及重启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

  1. 连接池:
pm = static|dynamic
#static:固定数量的子进程;pm.max_children
#dynamic:子进程数量以动态模式管理,默认值
  1. 连接数/请求数/空闲进程数
pm.max_children = 50
pm.start_servers =5
pm.min_spare_servers =5
pm.max_spare_servers =35
pm.max_requests = 500  #每个进程可以处理的请求数
  1. 确保运行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模式)

  1. 安装PHP-FPM
    首先要卸载PHP
[101]$ yum install php-fpm
  1. 查看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
  1. 配置文件
[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存放位置
  1. 启动PHP-FPM
systemctl start php-fpm
  1. 安装httpd
yum install httpd
  1. 查看Httpd mod_fcgi模块是否加载
httpd -M | grep fcgi
proxy_fcgi_module (shared)
  1. 添加FCGI的配置文件
DirectoryIndex index.php
ProxyRequests off    #是否开启正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1 
#开启FCGI反向代理,//前面的/相对于后面的/var/www/html而言,后面的$1是指前面的/(.*\.php)
  1. 重启Httpd:
systemctl start httpd

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注