PHPphp优化,操作码优化,缓存优化

一、php缓存加快器软件项目

xcache,eaccelerator,zend,apc
如何抉择:
建议xcache,eaccelerator,二选一,首选xcache
xcache更快

二、php缓存加快器

呼吁一个PHP程序时,PHP引擎会解析该程序,并将其编译为一定操作码,那是要履行的代码的一种二进制表示形式。
跟着,此操作码有PHP引擎执行并丢掉。操作码缓存将保存这么些编译后的操作码,
并在下三遍调用该页面时选择它。那会节省比比皆是双重编译的时刻。
为了增强PHP引擎的实践成效,PHP缓存加快器设计的目标是缓存PHP解析过的操作码,
那样同样的哀告访问过来,PHP引擎就不需求分析转换了,可以直接调用PHP的操作码,
诸如此类就加强了web服务响应速度,从而升级了用户的拜会体验。

三、原理分析

1、apache接收客户PHP程序请求。
2、apache将php程序请求传递给libphp5.so。
3、libphp5.so定位磁盘上的Php文件,并加载到内存中。
4、libphp5.so编译源代码成为opcode树。
5、libphp5.so执行opcode树。
PHP缓存加速器解决的就是上述第4步问题,将opcode内容开展缓存,目标是防备
PHP每一遍请求都重复编译解析PHP程序代码,因为在高访问量的网站上,多量的双重编译
会损耗很多资源和事件,所以那其间的瓶颈就是PHP的重复编译既影响了响应速度,
又加深了服务器的载荷,为了化解此问题,PHP加速器就这么出生了。…

四、版本问题

php5.3.x可以用eaccelerator-0.9.6版本,如若使用0.9.5.2本子在make阶段会报错
php5.2.x可以用eaccelerator-0.9.5.2版本。。。。版本很要紧,,,安装该软件可能需求考虑perl的编译问题。

五、安装Php加速软件

Eaccelerator:

5.1.1)配置环境变量LC_ALL

[root@aliyun ~]# echo 'export LC_ALL=C'>>/etc/profile
[root@aliyun ~]# . /etc/profile

5.1.2)安装perl相关软件

[root@aliyun ~]# yum -y install perl-devel

5.1.3)安装php
eaccelerator缓存加快模块    
 http://blog.csdn.net/zqtsx/article/details/9770715

下载源码:http://eaccelerator.net/

5.1.4)在php程序中实践如下,在php程序中设置插件大概都要实践如下的操作

[root@aliyun eaccelerator-0.9.6]# /application/php/bin/phpize 
phpize是用来扩展php模块的,通过phpize可以建立php的外挂模块

5.1.5)开首编译、安装

[root@aliyun eaccelerator-0.9.6]# ./configure --enable-eaccelerator=shared --with-php-config=/application/php/bin/php-config
make && make install

/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/     这下面的模块就是安装成功了
-rwxr-xr-x 1 root root 414117 Sep  8 10:12 eaccelerator.so

 

Xcache:   

其次个加速模块,这么些与地方的二选一就够了,不用都设置xcache是一个又快又安静的php
opcode缓存器。经过完美的测试并在大流量/高负荷的生产机器上稳定运转,经过测试并协理具有现行php分支的的新颖揭橥版本,并支持线程安全/windows,与同类opcode缓存器比较更胜一筹。
xcache的多少个特征:
将php代码进行编译(表现类似于.net和java的编译,内部机制差异),那样可以不用再行读取php文件,加速整个程序的周转效能;
可以缓存数据到内存,间接可以用,例如你的有些不会时时转移的数量,只用几回从数据库读取出来后保存到xcache中,就不要再去读取数据库了。

5.2.1)

/application/php/bin/phpize 

5.2.2)编译安装

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

安装好之后查看路径模块
[root@aliyun xcache-1.3.2]# ll /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
total 876
-rwxr-xr-x 1 root root 414117 Sep  8 10:12 eaccelerator.so
-rwxr-xr-x 1 root root 475399 Sep  8 11:03 xcache.so
注意,nginx,apache的模块路径可能不一样

  

Memcache:
memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个集合的壮烈的hash表,它可以用来存储各样格式的多少,蕴含图像、视频、文件以及数据库检索的结果等。简单的讲就是将数据调用到内存中,然后从内存读取,从而大大进步读取速度。
memcache分为服务端软件(memcached-1.4.3.tar.gz)和客户端插件(名字如:memcache-2.2.5.tgz)多少个部分,本文就是客户端插件在Php服务中的安装。

5.3.1)编译安装

[root@aliyun tools]# tar -xf memcache-2.2.5.tgz 
[root@aliyun tools]# cd memcache-2.2.5
[root@aliyun memcache-2.2.5]# /application/php/bin/phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
[root@aliyun memcache-2.2.5]# ./configure --with-php-config=/application/php/bin/php-config 
make && make install

[root@aliyun memcache-2.2.5]# ll /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
total 1120
-rwxr-xr-x 1 root root 414117 Sep  8 10:12 eaccelerator.so
-rwxr-xr-x 1 root root 246576 Sep  8 12:59 memcache.so
-rwxr-xr-x 1 root root 475399 Sep  8 11:03 xcache.so

 

PDO_MYSQL(可选):
PDD增添为php访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数量访问抽象层,那样,无论选择什么数据库,都足以透过一致的函数执行查询并获取数据。

5.4.1)安装

[root@aliyun tools]# tar zxf PDO_MYSQL-1.0.2.tgz 
[root@aliyun tools]# cd PDO_MYSQL-1.0.2
[root@aliyun PDO_MYSQL-1.0.2]# /application/php/bin/phpize
[root@aliyun PDO_MYSQL-1.0.2]# ./configure --with-php-config=/application/php/bin/php-config --with-pdo-mysql=/application/mysql
make && make install

 

ImageMagick:

ImageMagick是一个免费的创制、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图纸。图片切割、颜色替换、各样作用的使用,图片的转动、组合,文本,直线,多边形,椭圆,曲线,附加到图片展开旋转。ImageMagick是免费软件:全体源码开放,可以随便使用,复制,修改,公布,它遵从GPL许可协议,可以运作于多数的操作系统,ImageMagick的大部分职能的采纳都出自命令行工具。

5.5.1)安装图像处理程序及imagick增添模块,,,,安装的时候注意版本,我在centos7上设置的时候,,ImageMagick-7.0.7-0
imagick-3.4.3

[root@server tmp]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
3.10.0-327.el7.x86_64

5.5.2)编译安装

tar -zxf ImageMagick.tar.gz
cd ImageMagick-6.5.1-2/
./configure
make && make install

make报错:会有perl的错,内存不够的错,等等,内存要硬着头皮大点,要不然编译一贯包内存不够的错,,,可以先make
,然后make install

 

imagick php
imagick插件须要ImageMagick软件的支持,所以必要求先安装ImageMagick。一个方可供php调用ImageMagick效率的扩展。使用那个扩大可以使PHP具备和ImageMagick相同的意义。

5.6.1)编译安装

[root@aliyun tools]# tar -zxf imagick-2.3.0.tgz 
[root@aliyun tools]# cd imagick-2.3.0
[root@aliyun imagick-2.3.0]#  /application/php/bin/phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
[root@aliyun imagick-2.3.0]# ./configure --with-php-config=/application/php/bin/php-config 
make && make install 

 

 

六、配置php加速与环城扩张模块

修改/application/php/lib/php.ini
那些是自我要好改的php.ini配置文件的岗位,每个人的可能都不均等,默许在/etc下,有相关参数可以配备

6.1)配置memcache.so、pdo_mysql.so、imagick.so七个模块**

a.执行vi /application/php/lib/php.ini编辑查找extension_dir="./"参数
修改为extension_dir = "/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/"
模块的路径
windows的不管

b.按住shift+g到文件结尾,增加以下几行,然后保存:,让模块生效
extension = memcache.so
extension = pdo_mysql.so
extension = imagick.so

此时需求重启php-fpm

[root@aliyun lib]# pkill php-fpm
[root@aliyun lib]# /application/php/sbin/php-fpm    

可以透过phpinfo();验证以下,是不是见效,如若生效就会时有暴发相应的模块。。。

6.2)配置eaccelerator插件生效

a.配置eaccelerator缓存目录
[root@aliyun ~]# mkdir -p /tmp/eaccelerator
[root@aliyun ~]# chown -R nginx.nginx /tmp/eaccelerator/
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

如若安插了zend,上面那么些要放在zend前边

eacc查看加速状态,要卓有成效最好重启服务器和php-fpm

[root@aliyun ~]# /application/php/bin/php -v
PHP 5.3.27 (cli) (built: Sep  4 2017 21:33:58) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
    with eAccelerator v0.9.6, Copyright (c) 2004-2010 eAccelerator, by eAccelerator

[root@aliyun ~]# ll /tmp/eaccelerator/
total 64
drwxrwxrwx 18 root root 4096 Sep 11 10:07 0
drwxrwxrwx 18 root root 4096 Sep 11 10:07 1
drwxrwxrwx 18 root root 4096 Sep 11 10:07 2
drwxrwxrwx 18 root root 4096 Sep 11 10:07 3
drwxrwxrwx 18 root root 4096 Sep 11 10:07 4
drwxrwxrwx 18 root root 4096 Sep 11 10:07 5
drwxrwxrwx 18 root root 4096 Sep 11 10:07 6
drwxrwxrwx 18 root root 4096 Sep 11 10:07 7
drwxrwxrwx 18 root root 4096 Sep 11 10:07 8
drwxrwxrwx 18 root root 4096 Sep 11 10:07 9
drwxrwxrwx 18 root root 4096 Sep 11 10:07 a
drwxrwxrwx 18 root root 4096 Sep 11 10:07 b
drwxrwxrwx 18 root root 4096 Sep 11 10:07 c
drwxrwxrwx 18 root root 4096 Sep 11 10:07 d
drwxrwxrwx 18 root root 4096 Sep 11 10:07 e
drwxrwxrwx 18 root root 4096 Sep 11 10:07 f

[root@aliyun ~]# find /tmp/eaccelerator/ -type f
/tmp/eaccelerator/2/4/eaccelerator-31546.068039
/tmp/eaccelerator/2/4/eaccelerator-31546.358039
/tmp/eaccelerator/2/f/eaccelerator-31546.284529
/tmp/eaccelerator/2/f/eaccelerator-31546.584529
……

  

6.3)配置xcache插件加快,,,这些与eaccelerator只要配置一个就好了,配置多少个可能会有龃龉

[root@aliyun xcache-1.3.2]# ls xcache.ini 
xcache.ini
3 ;zend_extension = /usr/local/lib/php/extensions/non-debug-non-zts-xxx/xcache.so    注释该行
6 ;zend_extension_ts = c:/php/extensions/php_xcache.dll     注释该行
8 extension = xcache.so                         取消注释
25 xcache.size  =               128M
27 xcache.count =                 1
31 xcache.ttl   =                 86400
33 xcache.gc_interval =           3600
36 xcache.var_size  =            0

将修改后的xcache.ini合并到php.ini结尾
[root@aliyun xcache-1.3.2]# cat xcache.ini >> /application/php/lib/php.ini

 

 

生产条件插件的设置提出
1)功效性插件,假使开发人员没需求,可以临时不考虑设置,如:PDO_MYSQL,memecache,imagick
2)优化性插件eaccelerator,xcache,ZendOptimizer,apc可以轻易4选1设置。,前多个好点。

相关文章