博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php优化,操作码优化,缓存优化
阅读量:4948 次
发布时间:2019-06-11

本文共 7371 字,大约阅读时间需要 24 分钟。

一、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-configmake && 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-configmake && 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/phpizeConfiguring for:PHP Api Version:         20090626Zend Module Api No:      20090626Zend 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/mysqlmake && 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.gzcd ImageMagick-6.5.1-2/./configuremake && 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/phpizeConfiguring for:PHP Api Version:         20090626Zend Module Api No:      20090626Zend 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.soextension = pdo_mysql.soextension = 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<

如果配置了zend,上面这个要放在zend前面

eacc查看加速情况,要生效最好重启服务器和php-fpm

[root@aliyun ~]# /application/php/bin/php -vPHP 5.3.27 (cli) (built: Sep  4 2017 21:33:58) Copyright (c) 1997-2013 The PHP GroupZend 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 64drwxrwxrwx 18 root root 4096 Sep 11 10:07 0drwxrwxrwx 18 root root 4096 Sep 11 10:07 1drwxrwxrwx 18 root root 4096 Sep 11 10:07 2drwxrwxrwx 18 root root 4096 Sep 11 10:07 3drwxrwxrwx 18 root root 4096 Sep 11 10:07 4drwxrwxrwx 18 root root 4096 Sep 11 10:07 5drwxrwxrwx 18 root root 4096 Sep 11 10:07 6drwxrwxrwx 18 root root 4096 Sep 11 10:07 7drwxrwxrwx 18 root root 4096 Sep 11 10:07 8drwxrwxrwx 18 root root 4096 Sep 11 10:07 9drwxrwxrwx 18 root root 4096 Sep 11 10:07 adrwxrwxrwx 18 root root 4096 Sep 11 10:07 bdrwxrwxrwx 18 root root 4096 Sep 11 10:07 cdrwxrwxrwx 18 root root 4096 Sep 11 10:07 ddrwxrwxrwx 18 root root 4096 Sep 11 10:07 edrwxrwxrwx 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.ini3 ;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  =               128M27 xcache.count =                 131 xcache.ttl   =                 8640033 xcache.gc_interval =           360036 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安装。,前两个好点。

转载于:https://www.cnblogs.com/bill2014/p/7510789.html

你可能感兴趣的文章
使用nginx做反向代理和负载均衡效果图
查看>>
access remote libvirtd
查看>>
gdb调试中出现No symbol table is loaded. Use the "file" command.问题
查看>>
(4) Orchard 开发之 Page 的信息存在哪?
查看>>
ASP.NET中 GridView(网格视图)的使用前台绑定
查看>>
图像加载
查看>>
关于zxing生成二维码,在微信长按识别不了问题
查看>>
Haskell学习-高阶函数
查看>>
手动通知扫描SD卡主动生成缩略图
查看>>
js中tagName和nodeName
查看>>
PC-XP系统忘记密码怎么办
查看>>
Android实例-打电话、发短信和邮件,取得手机IMEI号(XE8+小米2)
查看>>
深入了解Oracle ASM(二):ASM File number 1 文件目录
查看>>
SQL数据库学习系列之一
查看>>
Boosting(提升方法)之AdaBoost
查看>>
CUDA学习1 在Visual Studio和CodeBlocks上配置
查看>>
JavaScript(6)——事件1.0
查看>>
2013 ACM-ICPC China Nanjing Invitational Programming Contest 总结
查看>>
【Hibernate学习笔记-5】@Formula注解的使用
查看>>
链接元素<a>
查看>>