1.1操作码介绍及缓存原理

当客户端请求一个PHP程序时,服务器的PHP引擎会解析到该PHP程序,并将其变异为特定的操作码文件(OperateCode opcode),这是要执行的PHP代码的一种二进制表示形式。默认情况下,这个编译好的操作码文件由PHP引擎执行后丢弃。操作码缓存(Opcode opcode)的原理就是将这个变异后的操作码保存下来,兵放入到共享内存里,以便在下一次调用该PHP页面时重用它,避免了相同代码的重复变异。节省PHP引擎重复编译的时间,降低了服务器负载,同时减少了CPU和内存开销

1.2PHP缓存加速软件介绍

为了提高PHP引擎的高兵发访问及执行速度,产生了一系列PHP缓存及加速软件。这些软件设计的目的就是缓存前文提到的PHP引擎解析过的操作码文件,此时,在指定时间内若有相同的PHP程序请求访问,就不需要重复解析编译了,而是直接调用缓存中的PHP操作码文件,这样就提高了动态Web服务的处理速度,从而提升了用户访问企业网站的整体体验。

1.3LNMP环境PHP缓存加速原理详解

在LNMP环境中,PHP引擎不再使用libphp5.so模块了,而是启动了独立的FastCGI(php-fpm)进程,由它监听来自Nginx的PHP程序请求,并交给PHP引擎解析处理,整个执行流程大概如下:

1) Nginx接收客户端的PHP程序访问请求。

2) Nginx根据扩展名等过滤规则将PHP程序请求传递给解析PHP的FastCGI进程(php-fpm)

3) PHP FPM进程调用PHP解析器读取站点磁盘上的PHP文件,并加载到内存中。

4) PHP解析器将PHP程序编译成为opcode文件,然后把opcode缓存起来。

5) PHP FPM引擎执行opcode树,返回数据给Nginx,进而返回客户端。

6) Nginx接收客户新的PHP程序请求,PHP FPM引擎就会直接读取缓存中的opcode执行,将结果返回,而无需第4步操作,从而提升了PHP编译解析效率。

1.4PHP缓存加速软件种类及选择建议

PHP缓存加速软件常用的种类有xcache、eaccelerator、APC(Alternative PHP Cache)ZendOpcache等。在企业环境我们要如何选择PHP缓存加速软件呢?

事实上,任选其一即可,没必要都安装上,都安装也可以能会发生冲突。总的选择建议就是根据企业的业务需求及选择前的压力测试结果,或者根据个人的经验偏好选择。不过,建议首选Xcache,其次是eaccelerator,如果想尝试,可以选择ZendOpcache

首选xcache的原因如下:

q   经过测试Xcache效率更好,更快。

q   xcache软件开发社区更活跃,最新版2014年底发布。

q   支持更高版本的PHP,例如PHP5.5、PHP5.6

次选eaccelerator的原因如下:

q   安装及配置参数更简单、加速效果也不错。

q   安装资料较多,但官方对软件的更新很慢,社区不活跃。

q   仅适合PHP版本5.4以下的程序。

选择ZendOpcache的原因如下:

q   是PHP官方研发的新一代缓存加速软件,以后的发展潜力可能会更好,PHP5.5以前的版本可以通过ZendOpcache软件以插件扩展的方式安装,从PHP5.5版本开始已经整合到PHP软件里了,编译时只需要指定一个参数即可,例如:--enable-opcache

q   ZendOpcache可能是未来的缓存加速首选,现在的稳定性还有待检验,小规模环境下PHP5以前的版本可以通过插件式安装使用,PHP5以上的版本可以直接指定参数编译使用,若可以忍受ZendOpcache的各种未知问题的话,也可以尝试。

1.5PHP缓存加速器安装环境准备

1.5.1 LNMP基础Web环境准备

在安装PHP的扩展及缓存加速软件之前,需要先安装好LNMP的完整环境,例如:能配置出现phpinfo信息的界面表示PHP服务正常安装,同时最好可以编写一个调用数据库的简单PHP程序,进而确认MySQL数据库是不是正常的。

1.5.2 检查LNMP软件版本

1)查看Linux内核及版本相关信息

[root@web-node1 ~]# cat /etc/redhat-release

CentOS release 6.7 (Final)

[root@web-node1 ~]# uname -r

2.6.32-573.el6.x86_64

2)查看Nginx Web版本相关信息:

[root@web-node1 ~]# /application/nginx/sbin/nginx -v

nginx version: nginx/1.6.3

3)查看PHP服务版本相关信息

[root@web-node1 ~]# /application/php/bin/php -v

PHP 5.3.27 (cli) (built: Nov 20 2015 02:39:11)

4)查看MySQL服务版本相关信息

[root@web-node1 ~]# mysql -uroot -e "select version();"

+-----------+

| version() |

+-----------+

| 5.5.32    |

+-----------+

1.5.3 有关LNMP环境扩展软件部署说明

不管是Apache还是Nginx,最后都是通过PHP提供动态程序解析的,因此,不管是Apache的libphp5.so模块方式,还是Nginx的FastCGI的PHP服务方式,最终在PHP引擎上的优化也一致的,即都是基于PHP服务(php.ini)的,因此,如无特殊说明,如下优化均适合LNMP和LAMP,有需要Apache服务的读者学习本章也能起到参考作用。

1.配置环境变量LC_ALL

[root@web-node1 ~]# echo 'export LC_ALL=C' >> /etc/profile

#设置环境变量,解决后面perl程序插件的编译问题。符号“>>”表示向文件追加内容。

[root@web-node1 ~]# tail -1 /etc/profile

export LC_ALL=C

#查看是否正确追加了export LC_ALL=C环境配置

[root@web-node1 ~]# . /etc/profile

#使增加的环境变量配置生效。

[root@web-node1 ~]# echo $LC_ALL

C  #查看生效结果

2.安装perl相关软件依赖

需要提前安装perl相关软件依赖软件包,执行yum -y install perl-devel

yum -y install perl-devel

如果不安装上述软件包,在后面安装ImageMagick时可能会报错,后文安装ImageMagick时相应的报错说明。

1.6安装PHP缓存加速扩展模块

1.6.1 安装PHP eAccelerator缓存加速模块

eAccelerate是一个免费的、开放源代码的PHP加速、优化以及缓存的扩展插件软件,它可以缓存PHP程序编译后的中间代码文件(opcode)、session数据等,降低PHP程序在编译解析时对服务器的性能开销。eAccelerator还可以加快PHP程序的执行速度,降低服务器负载压力,使PHP程序代码执行效率能提高1~10倍。

eAccelerator会把编译好的PHP程序存放在共享内存里,然后每次从内存里调用执行,可以设定把一些不适合放在内存里缓存的编译结果存储在i磁盘上,默认情况,磁盘和内存缓存都会备eAccelerator使用。

eAccelerator算是一个老牌的缓存加速软件,曾经结合PHP引擎解析时备广泛使用,成熟稳定,目前代码更新不活跃,因此,使用的企业逐渐减少,但eAccelerator仍是一款值得信赖的缓存加速软件。XCache的官方也称赞eAccelerator是不错的opcode缓存器。

eAccelerator的最新版为0.9.6.1,支持的PHP最新版本为PHP5.3以及前5系列的版本。

eAccelerator具体的安装如下:

cd /application/tools/

tar xf eaccelerator-0.9.6.1.tar.bz2

cd eaccelerator-0.9.6.1

/application/php/bin/phpize

./configure --enable-eaccelerator=shared --with-php-config=/application/php/bin/php-config

make

make install

cd ../

ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/

eaccelerator.so #最后生成了eaccelerator.so模块就表示eaccelerator安装成功

#注意:5.5无法使用该软件

configure的参数路径要正确配置,特别是后面的--with-php-config参数对应的PHP安装目录地址,几乎所有的PHP扩展都要指定这个参数。

1.6.2 安装PHP xcache缓存加速模块

XCache是一个开源的、又快又稳定的PHP opcode缓存器/优化器,其项目leader曾经是Lighttpd(和Nginx类似的高速web服务软件)的开发成员之一。XCache通过把对PHP程序编译后的数据(opcode)缓存到共享内存里,避免让相同的程序重复编译。用户请求相同的PHP程序时,可以直接使用缓存中已编译好的数据,从而提高PHP的访问速度,通常可以提升2~5倍,并大幅降低服务器负载开销。

很多公司在使用XCache,它已经能在大流量/高负载的生产环境稳定运行,与同类型的opcode缓存器相比在各个方面都更胜一筹,例如:社区活跃、快速开发、能够快速跟进PHP的版本更新等。

关于XCache软件详情请参考:http://xcache.lighttpd.net 或http://xcache.lighttpd.net/wiki/Introduction

Xcache具体的安装如下:

cd /application/tools/

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

/application/php/bin/phpize

./configure --enable-xcache--with-php-config=/application/php/bin/php-config

make

make install

ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/

xcache.so #最后生成了xcache.so模块就表示xcache安装成功

1.6.3 安装PHP ZendOpcache缓存加速模块

从PHP5.5开始,官方已经集成新一代的缓存加速插件,名字为ZendOpcache,功能和前三者相似但又有少许不同,据官方说,这个ZendOpcache缓存速度更快。

这几个PHP加速插件的主要原理基本相同,就是把PHP执行后的数据缓存到内存中从而避免重复的编译过程,使其能够直接使用缓存中已编译的代码,从而提高速度,降低服务器负载,它们的效率是显而易见的,像一些大型的CMS,每次打开一个页面要调用十个PHP文件,执行数万行代码,效率可想而知,在安装上树加速器后打开页面的速度明显快了不少。

由于我们PHP版本为5.3,因此需要以PHP扩展插件的方式安装,而不能使用PHP编译直接加参数(--enable-opcache)的方式(PHP5.5以上才可以),操作步骤及过程如下。

ZendOpcache具体的安装如下:

cd /application/tools/

wget -q http://pecl.php.net/get/zendopcache-7.0.5.tgz

tar xf zendopcache-7.0.5.tgz

cd zendopcache-7.0.5

/application/php/bin/phpize

./configure --enable-opcache --with-php-config=/application/php/bin/php-config

make

make install

ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/

opcache.so #最后生成了opcache.so模块就表示opcache安装成功

1.7安装数据库缓存及PHP扩展插件

1.7.1 安装PHP Memcached扩展模块

Memcached缓存软件说明

Memcache工作原理

Memcache具体的安装如下:

cd /application/tools/

wget -q http://pecl.php.net/get/memcache-2.2.7.tgz

tar xf memcache-2.2.7.tgz

cd memcache-2.2.7

/application/php/bin/phpize

./configure --enable-memcache --with-php-config=/application/php/bin/php-config

make && make install

ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/

memcache.so #最后生成了memcache.so模块就表示memcache安装成功

phpinfo加载Memcache状态信息

1.7.2 安装PHP Redis扩展模块

为php安装redis客户端扩展

cd /applications/tools/

wget https://github.com/nicolasff/phpredis/archive/master.zip

unzip master.zip

cd phpredis-master/

/application/php/bin/phpize

./configure -with-php-config=/application/php/bin/php-config

make && make install

ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/

cd ../

1.7.3 安装PHP PDO_MYSQL扩展模块

PDO扩展为PHP访问数据库定义了一个轻量级一致性的接口,它提供了一个数据访问抽象层,这样,无论使用的是什么数据库,都可以通过一致的函数执行查询并获取数据。

PDO_MYSQL的安装有两种方法,一种插件方式安装,一种是编译PHP时加入PDO_MYSQL支持,直接指定PHP的对应PDO_MYSQL变异参数安装即可,例如:--with-pdo-mysql=mysqlnd,同时PHP的环境也可以不装MySQL软件,直接指定如下参数--with-mysql=mysqlnd即可让PHP支持连接MySQL数据库。

PDO_MySQL具体的安装如下:

cd /application/tools

wget -q http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

tar xf PDO_MYSQL-1.0.2.tgz

cd PDO_MYSQL-1.0.2/

/application/php/bin/phpize

./configure--with-php-config=/application/php/bin/php-config --with-pdo-mysql=/application/mysql

make

make install

ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/

pdo_mysql.so

#config的参数路径要正确配置。/application/mysql为MySQL的安装路径,要先安装好MySQL,如果是远程的话则使用mysqlnd,本文讲解的是LNMP一体的环境。

tail -1 /etc/ld.so.conf  #添加MySQL路径

/application/mysql-5.5.32-linux2.6-x86_64/lib/

ldconfig  #生效

软链接方式

ln -s /application/mysql-5.5.32-linux2.6-x86_64/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18

1.7.4 安装PHP Imagick扩展插件

imagick插件工作需要ImageMagick软件的支持,所以,必须要先安装ImageMagick,否则会报错。

imagick插件是一个可以供PHP调用ImageMagick功能的扩展模块。使用这个扩展可以使PHP具备和ImageMagick相同的功能。

装了ImageMagick图像程序后,再装PHP的扩展imagick插件,才能使用ImageMagick提供的api来进行图片的创建与修改、压缩等操作,因为它们都集成在了imagik这个PHP扩展中。

ImageMagick的常见功能如下:

q   将图片从一个格式转换到另一个格式,包括直接转换成图标。

q   可以改变图片尺寸、旋转、锐化、减色、设置图片特效。

q   对图片设置各种尺寸缩略图。

q   可以适应于Web背景的透明图片。

q   将一组图片做成gif动画,直接convert。

q   将几张图片做成一张组合图片。

q   在一个图片上写字或画图形,带蚊子阴影和边框渲染。

q   给图片加边框或框架。

q   取得一些图片的特性信息。

它几乎包括了gimp可以实现的所有常规插件功能,甚至包括各种曲线参数的渲染功能。ImageMagick的下载地址:

http://download.chinaunix.net/download/0001000/95.shtml

ImageMagick具体的安装如下:

cd /application/tools/

tar xf ImageMagick-6.7.9-9.tar.xz

cd ImageMagick-6.7.9-9

./configure

make && make install

cd ..

#此软件make时间较长

Imagick具体的安装如下(先安装imageMagick):

cd /application/tools/

tar xf imagick-2.3.0.tgz

cd imagick-2.3.0

/application/php/bin/phpize

./configure --with-php-config=/application/php/bin/php-config

make

make install

ls /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/

imagick.so

下面针对PHP加速器比较结果进行总结。

通过测试 得出eAccelerator在请求时间和内存占用综合方面是最好的。

通过测试得出使用加速去比无加速器在请求时间快了3倍左右。

通过各个官方观察,Xcache是更新最快的,这也说明它是最有发展的。

每个加速器还有一些可以调优的参数,所以要根据你的系统环境而定,然后Xcache和ZendOpcache这两款加速器的潜力还是很大的。

1.8配置PHP加速与缓存相关扩展插件模块

1.8.1 配置Memcache/pdo_mysql/imagick模块生效

cd /application/php/lib/

cp php.ini php.ini.ori

sed 's#; extension_dir = "./"#extension_dir = "/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/"#g' php.ini

快速操作如下:

cat >> /application/php/lib/php.ini <<EOF

extension = memcache.so

extension = pdo_mysql.so

extension = imagick.so

EOF

[root@web-node1 lib]# tail -5 php.ini #检查

extension_dir = "/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/"

extension = memcache.so

extension = pdo_mysql.so

extension = imagick.so

1.8.2 配置eAccelerator插件加速

mkdir -p /tmp/eaccelerator

#此目录可以使用tmpfs内存文件系统或者SSD固态磁盘来存储优化。

#mount -t tmpfs  -o size=16m tmpfs /tmp/eaccelerator

#临时使用内存替换磁盘空间

chown -R www.www /tmp/eaccelerator

#上面的授权是nginx的用户

cat >> /application/php/lib/php.ini<<EOF

[eaccelerator]

extension=eaccelerator.so

eaccelerator.shm_size="64"

eaccelerator.cache_dir="/tmp/eaccelerator"

eaccelerator.enable="1"

eaccelerator.optimizer="1"

eaccelerator.check_mtime="1"

eaccelerator.debug="0"

eaccelerator.filter=""

eaccelerator.shm_max="0"

eaccelerator.shm_ttl="3600"

eaccelerator.shm_prune_period="3600"

eaccelerator.shm_only="0"

eaccelerator.compress="1"

eaccelerator.compress_level="9"

EOF

eaccelerator配置参数详解

[eaccelerator]  #开始eaccelerator加速模块配置。

extension=eaccelerator.so  #加载eaccelerator加速模块,路径相对于extension_dir的配置。

eaccelerator.shm_size="64"  #存储缓存数据的共享内存大小,如果为0,则最大值看内核配置/proc/sys/kernel/shmmax。

eaccelerator.cache_dir="/tmp/eaccelerator"  #磁盘缓存存储路径,缓存内容为precompiled code\session\data\content\user\entries。默认路径。

eaccelerator.enable="1"  #eaccelerator缓存生效开关,1为默认值,即生效。0为关闭,不生效。

eaccelerator.optimizer="1"  #加速PHP代码行速度,1为默认值表示激活,0为不激活。用于缓存前的代码加速。

eaccelerator.check_mtime="1"  #检查缓存修改时间决定代码是否需要重新变异,1为激活,是默认值。

eaccelerator.debug="0"  #缓存加速调试,0为关闭,1为打开,打开后可以看到缓存命中信息。

eaccelerator.filter=""  #设置对象是否缓存规则,空表示不设定。

eaccelerator.shm_max="0"

eaccelerator.shm_ttl="3600"

eaccelerator.shm_prune_period="3600"

eaccelerator.shm_only="0"

eaccelerator.compress="1"

eaccelerator.compress_level="9"

检查eAccelerator加速配置是否生效

[root@web-node1 ~]# /application/php/bin/php -v  #查看模块是否生效

PHP 5.3.27 (cli) (built: Nov 20 2015 02:39:11)

Copyright (c) 1997-2013 The PHP Group

Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies

with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator

重启php-fpm,访问php.info才能加载eaccelerator

[root@web-node1 ~]# pkill php-fpm

[root@web-node1 ~]# /application/php/sbin/php-fpm

phpinfo加载eAccelerator状态信息

1.8.3 配置xcache插件加速

[root@web-node1 xcache-3.2.0]# cat /application/tools/xcache-3.2.0/xcache.ini >> /application/php/lib/php.ini   #加载xcache.so文件

检查Xcache加速配置是否生效

[root@web-node1 lib]# /application/php/bin/php -v  #查看模块是否生效

PHP 5.3.27 (cli) (built: Nov 20 2015 02:39:11)

Copyright (c) 1997-2013 The PHP Group

Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies

 with XCache v3.2.0, Copyright (c) 2005-2014, by mOo

 with XCache Cacher v3.2.0, Copyright (c) 2005-2014, by mOo

xcache配置参数详解

 

[xcache-common]

extension = /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/xcache.so

[xcache.admin]

xcache.admin.enable_auth = On  #激活管理认证

xcache.admin.user = "mOo"  #指定xcache管理员用户

xcache.admin.pass = "md5 encrypted password"  #指定xcache管理员密码

[xcache]  #开始xcache缓存参数配置段,喜爱安所有的初始化值即为默认值,除非明确说明。

xcache.shm_scheme =        "mmap"  #设置xcache如何从系统分配共享内存

xcache.size  =               60M  #0为禁止缓存,非0则启用缓存,需要注意系统所允许的nmap最大值

xcache.count =                 1  #指定将cache切分成多少块,官方推荐设置服务器cpu的数量

xcache.slots =                8K  #只是作为hash槽个数的参考值,缓冲超过这个个数的内容没有任何问题

xcache.ttl   =                 0  #设定cache对象的生存期TTL 0为永不过期。

xcache.gc_interval =          0  #回收器扫描过期的对象回收内存空间的间隔,0为不扫描,其他值的单位是秒。

xcache.var_size  =4M  #这几个值和上面的几个类似,只不过用于变量缓存,而不是opcode缓存。

xcache.var_count =            1

xcache.var_slots =            8K

xcache.var_ttl   =0

xcache.var_maxttl   =0

xcache.var_gc_interval =     300

xcache.var_namespace_mode =    0

xcache.var_namespace =        ""

xcache.readonly_protection = Off

xcache.mmap_path =    "/dev/zero"

xcache.coredump_directory =   ""

xcache.coredump_type =         0

xcache.disable_on_crash =    Off  #当xcache发生crash时,自动关闭xcach缓存。

xcache.experimental =        Of

xcache.cacher =               On

xcache.stat   =   On

xcache.optimizer =           Off

[xcache.coverager]

xcache.coverager =           Off

xcache.coverager_autostart =  On

xcache.coveragedump_directory = ""  #当xcache crash后,是否把数据保存到指定路径。

xcache可调整的关键参数(如下是调整后参数)

xcache.size  =               256M  #0为禁止缓存,非0则启用缓存,需要注意系统所允许的nmap最大值

xcache.count =                 2  #指定将cache切分成多少块,官方推荐设置服务器cpu的数量

xcache.ttl   =86400  #设定cache对象的生存期TTL 0为永不过期。

xcache.gc_interval =      3600  #回收器扫描过期的对象回收内存空间的间隔,0为不扫描,其他值的单位是秒。

xcache.var_size  =64M  #这几个值和上面的几个类似,只不过用于变量缓存,而不是opcode缓存。

phpinfo加载xcache状态信息

1.8.4 配置xcache Web界面

[root@web-node1 lib]#cd /application/tools/xcache-3.2.0

[root@web-node1 lib]#cp -a htdocs/ /application/nginx/html/blog/xadmin

[root@web-node1 lib]# echo -n "123456"|md5sum  #生成md5密钥

e10adc3949ba59abbe56e057f20f883e  -

#编辑php.ini里面的xcache.admin

[xcache.admin]

xcache.admin.enable_auth = On

xcache.admin.user = "test"

xcache.admin.pass = "e10adc3949ba59abbe56e057f20f883e"

#编辑php.ini Date时区

[Date]

date.timezone = Asia/Shanghai

Xcache登陆认证信息

1.8.5 配置ZendOpcache插件加速

cat >> /application/php/lib/php.ini<<EOF

[opcache]

zend_extension=/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/opcache.so

opcache.memory_consumption=128

opcache.interned_strings_buffer=8

opcache.max_accelerated_files=4000

opcache.revalidate_freq=60

opcache.fast_shutdown=1

opcache.enable_cli=1

EOF

检查ZendOpcache加速配置是否生效

[root@web-node1 lib]# /application/php/bin/php -v  #查看模块是否生效

PHP 5.3.27 (cli) (built: Nov 20 2015 02:39:11)

Copyright (c) 1997-2013 The PHP Group

Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies

with Zend OPcache v7.0.5, Copyright (c) 1999-2015, by Zend Technologies

 

phpinfo加载ZendOpcache状态信息

Opcache配置参数详解

opcache.memory_consumption=128  #Opcache共享内存空间大小,用于存放precompiledPHP code,默认为64,单位为Mbytes

opcache.interned_strings_buffer=8  #默认值为4,interned strings 内存的数量,单位是M

opcache.max_accelerated_files=4000 #默认值为2000,Opcache哈希表的key的最大数量

opcache.revalidate_freq=60  #默认值为2,检查文件时间戳的频率,用于共享内存分配的变化。

opcache.fast_shutdown=1  #默认值为0,如果激活一个快速的关闭队列将被用来加速代码。

opcache.enable_cli=1  #默认值为0,激活PHP CLI的Opcache,用于测试和调试。

更多的opcache参数可以查看安装目录下的README,本书的路径为/application/tools/zendopcache-7.0.5/README。

PHP5.5及以上版本在编译参数里指定--enable-opcache即可编译。

tar zxf php-5.5.13.tar.gz

cd php-5.5.13

./configure --prefix=/application/php --with-mysql --with-jpeg-dir --with-png-dir --with-zlib --enable-xml --with-libxml-dir --with-curl --enable-bcmath --enable-shmop --enable-sysvsem--enable-inline-optimization --enable-mbregex --with-openssl --enable-mbstring --with-gd --enable-gd-native-ttf --enable-sockets --with-xmlrpc --enable-zip --enable-soap --disable-debug --enable-opcache --enable-zip --enable-fpm --with-fpm-user=www --with-fpm-group=www

make && make install

最新文章

  1. 《JAVA 从入门到精通》 - 正式走向JAVA项目开发的路
  2. 原生JavaScript技巧大收集(11~20)-(终于又被我找到这篇文章了)
  3. VHDL:信号、端口以及和Verilog的区别
  4. struts2文件下载及 &lt;param name=&quot;inputName&quot;&gt;inputStream&lt;/param&gt;的理解
  5. http UserAgent
  6. ON_NOTIFY_REFLECT : Message Reflection for Windows Controls
  7. Java中随机数生成的两种方法,以及math的floor
  8. android keytool 不是内部命令或外部命令在 (win7下不能用的解决方法)
  9. c语言,volatile
  10. facebook .net sdk 应用
  11. 简易发号SQL,可用于生成指定前缀自增序列,如订单号,生成优惠券码等
  12. 使用hbase小结
  13. Alpha冲刺Day8
  14. Mina源码阅读笔记(五)—Mina对连接的操作IoSession
  15. RESTful levels、HATEOAS
  16. dbms_redefinition在线重定义表结构
  17. Dubbo浅谈
  18. 实验吧—Web——WP之 简单的sql注入之2
  19. Javascript如何实现GPU加速?
  20. iptables规则备份和恢复 firewalld的9个zone firewalld关于zone的操作 firewalld关于service的操作

热门文章

  1. 自己总结 C++ 代码规范
  2. 物体识别重要指标——平均准确率(Average Precision, AP )
  3. import 路径
  4. caffe学习4——net
  5. java之继承
  6. HDU - 1142:A Walk Through the Forest (拓扑排序)
  7. LOJ2425 NOIP2015 运输计划 【二分+LCA+树上差分】*
  8. python笔记-19 javascript补充、web框架、django基础
  9. excel怎么一次性生成10万个6位连续数 和 随机6位数
  10. 常用ES6语法