PHP加速

                                         PHP加速

实验环境:

CentOS6.4 32位系统

VMware workstation 10

php-5.4.24.tar.bz2

zendopcache-7.0.2.tgz



php和per以及ptyon,rubby,等都属于脚本类的语言,执行时都要进行翻译,叫做opcode(操作码

,字节码),但是,可想而知,对网站页面来说这是一项非常大的工作量,所以我们可以将那些翻译

过的opcode存入缓存当中,以提高网站的运行速度


opcode是计算机指令中的一部分,用于指定要执行的操作, 指令的格式和规范由处理器的指令规范

指定。 除了指令本身以外通常还有指令所需要的操作数,可能有的指令不需要显式的操作数。 这些

操作数可能是寄存器中的值,堆栈中的值,某块内存的值或者IO端口中的值等等。

通常opcode还有另一种称谓:字节码(byte codes)。 例如Java虚拟机(JVM),.NET的通用中间语言

(CIL: Common Intermeditate Language)等等。


PHP中的opcode则属于前面介绍中的后着,PHP是构建在Zend虚拟机(Zend VM)之上的。PHP的opcode

就是Zend虚拟机中的指令


运行一段PHP代码主要有两个阶段:编译和执行。 当然编译过程中还包括词法分析语法分析不同阶段

和细节,这里我们将其作为一个整体。在这两个阶段之间,PHP代码会被编译成op code,可以将其认

为是引擎的一个中间语言,编辑阶段把PHP源码生成op code,然后在执行阶段执行这些op code。


下面我们就来以实例说一下zend_opcache如何与php5.4版本的结合,因为在5.5以后的时代php自带的有一套自己opcache,可以在源代码的配置编译中自带--enable-opcache来实现加速,所以,我们这样做的目的也是为了帮助低版本php的性能提升。

<一>(php5.4+zendopcache)

主要的操作步骤如下:

安装php5.4,(源代码)并编译配置,

[root@localhost src]# tar -jxvf php-5.4.24.tar.bz2  -C /usr/local/src

wKiom1Lg8pShgMKSAAAkVOTxvTU249.jpg

[root@localhost php-5.4.24]# ./configure --prefix=/usr/local/php  --with-


apxs2=/usr/local/apache/bin/apxs  --with-mysql=/usr/local/mysql --with-


mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring=all

wKioL1Lg8nLxnczrAABVDfOpTHI379.jpg


[root@localhost ~]#make && make install

wKiom1Lg8pWh-bqVAAAeKNWcf0o852.jpg

之后我们可以去目录下确认一下编译安装及目录情况

wKioL1Lg8nHSN9dSAABgHMgjk38650.jpg

[root@localhost ~]# cd /usr/local/apache/htdocs/

然后我们编写一个小的调用php数据的页面


[root@localhost htdocs]# vim index.php

内容如下:



wKioL1Lg8nOzX4UdAAAOk08Ms1k756.jpg


然后修改Apache配置文件让他能解析.php文件,修改后如下:

wKiom1LeYSHgdE4GAAAZEby_Ywg016.jpg


解压zendopcache-7.0.2.tgz 文件,如果你想了解详细的安装步骤及解释可以参考README文件






wKiom1Lg8pbSO1sUAAAgzW8fpoY798.jpg


在进入该页面后,你会发现它并没有一般所有源码软件都应该具有的./configure命令(绿色可执行文件),这是因为zendopcache是作为一款支持软件出现的,它要做的是利用php的phpize扩展命令来实现的


[root@localhost zendopcache-7.0.2]# /usr/local/php/bin/phpize

Configuring for:

PHP Api Version:         20100412

Zend Module Api No:      20100525

Zend Extension Api No:   220100525

执行后结果,就有了我们需要的./confugure,如图


wKiom1Lg8pig7HDeAAEPknBPcPQ353.jpg

然后,执行正常的编译步骤:

wKioL1Lg8nWQCx3fAAAiWOpMVJk338.jpg

并且安装:

[root@localhost zendopcache-7.0.2]# make && make install

结果会提示我们新安装了这么一个共享文件:

wKioL1Lg8nXihmTsAABtSg-JRtw740.jpg

在make install这步中,将复制opcache.so进PHP extension 目录中,而我们就要在这个目录中用

他,上面的信息告诉我们在那样一个目录下有,查看到这个文件后,接着我们就要对他进行编辑,

然后利用php5.4的支持文件(软件支持的扩展)编写一个支持zendopcache-7.0.2的配置文件


wKiom1Lg8pmio6eHAAA_N8MkXHA097.jpg


在这个文件中我们可以看到在dba的选项中并没有有关opcache字段,所以,我们要手动加进去,如图


wKioL1Lg8nazd1PJAABQZ3Rf6uc713.jpg


主要是一些配置参数及路径地址和一些控制语句




wKiom1Lg8pzzaVkRAABbeJbVui0294.jpg


重启我们的服务,可以先用浏览器测试我们的文件是否配置正确,正确的话会在页面信息中反馈出来。如图:


wKiom1Lg8p-Bv5B9AAGJC9SsKOo768.jpg


然后我们简单建立一个站点,并用它进行测试


wKiom1LfYyzSx7l7AAB9OkvyOzk782.jpg


wKioL1LfYwniuC37AABBqU-uMAI135.jpg


访问测试,并登录这个网站



wKiom1Lg8qWiP0bgAAB2-9rlB1o346.jpg



接着我们利用专业的测试工具进行测试,如ab,httpd_loader,其中ab为Apache自带的压力测试工具,我们就以他为例,你也可以用其它的进行测试


wKioL1Lg8oKjcCHuAAEJ5cftGJQ468.jpg

然后我们关闭掉opcache功能,并比较两者之间的差异(因为我们的网站比较小,所以效果不会和正常测试那么悬殊,但效果依然很明显)

wKiom1Lg8qbxaI27AAB0mYxgl3A063.jpg


[root@localhost htdocs]# cd /usr/local/apache/bin/

[root@localhost bin]# ./ab -n 100000 http://192.168.1.199/phpMyAdmin-4.1.5-all-

languages

其中 -n表示一共的执行次数,-c表示每次的执行次数


[root@localhost bin]# ./ab -n 100000 http://192.168.1.199/phpMyAdmin-4.1.5-all-


languages

This is ApacheBench, Version 2.3 <$Revision: 1430300 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/


Benchmarking 192.168.1.199 (be patient)

Completed 10000 requests

Completed 20000 requests

Completed 30000 requests

Completed 40000 requests

Completed 50000 requests

Completed 60000 requests

Completed 70000 requests

Completed 80000 requests

Completed 90000 requests

Completed 100000 requests

Finished 100000 requests



Server Software:        Apache/2.4.4

Server Hostname:        192.168.1.199

Server Port:            80


Document Path:          /phpMyAdmin-4.1.5-all-languages

Document Length:        260 bytes


Concurrency Level:      1

Time taken for tests:   34.785 seconds

Complete requests:      100000

Failed requests:        0

Write errors:           0

Non-2xx responses:      100000

Total transferred:      52000000 bytes

HTML transferred:       26000000 bytes

Requests per second:    2874.76 [#/sec] (mean)

Time per request:       0.348 [ms] (mean)

Time per request:       0.348 [ms] (mean, across all concurrent requests)

Transfer rate:          1459.84 [Kbytes/sec] received


Connection Times (ms)

             min  mean[+/-sd] median   max

Connect:        0    0   0.0      0       1

Processing:     0    0   1.0      0     307

Waiting:        0    0   0.0      0       0

Total:          0    0   1.0      0     307


Percentage of the requests served within a certain time (ms)

 50%      0

 66%      0

 75%      0

 80%      0

 90%      0

 95%      0

 98%      0

 99%      0

100%    307 (longest request)


<二> xcache加速器的安装与使用


wKiom1Lg8qfituwqAAAisv_6omA006.jpg

和zend_opcache类似,它也要用到php的ize功能,(使用phpize(模块扩展)),增加./configure文件)如图


wKioL1Lg8oWDPULyAAELAkkuJB8190.jpg


[root@localhost xcache-3.1.0]# ./configure --enable-xcache --with-php-


config=/usr/local/php/bin/php-config



[root@localhost xcache-3.1.0]# make && make install

会看到算上上一步我们的执行结果,在文件路径下,因该会看到如下结果


wKiom1Lg8qnTfQ-FAABXFYlB330847.jpg

因为这个时候已经有了php.ini这样的配置文件,所以我们只需要将新的配置文件追加进去就可以了

并用exstension= 加入具体地址,如图:

wKiom1Lg8q6xXUYTAAAbvZbyZ-I048.jpg


[root@localhost no-debug-zts-20100525]# cat /usr/local/src/xcache-3.1.0/xcache.ini

>> /usr/local/php/lib/php.ini

[root@localhost no-debug-zts-20100525]# vim /usr/local/php/lib/php.ini

[root@localhost no-debug-zts-20100525]# service  httpd restart

the httpd is stoping....

ok

the httpd is starting...

ok


wKiom1Lg8quwjwf9AAEbixgFBa4253.jpg

利用页面进行测试,并寻找xcache选项


wKioL1Lg8ongb44sAAFQHL90nNs459.jpg



然后测试xcache,为了保证,xcache的测试效果,我们要将先前安转的opcache禁用掉,如图


wKioL1Lg8oryxSUjAAB_x_Kq8f0299.jpg


重启我们的Apache服务器,

root@localhost no-debug-zts-20100525]# vim  /usr/local/php/lib/php.ini

[root@localhost no-debug-zts-20100525]# service httpd restart

the httpd is stoping....

ok

the httpd is starting...

ok

[root@localhost no-debug-zts-20100525]# cd /usr/local/apache/bin/

[root@localhost bin]# ./ab -n 100000 http://192.168.1.199/phpMyAdmin-4.1.5-all-

languages

This is ApacheBench, Version 2.3 <$Revision: 1430300 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/


Benchmarking 192.168.1.199 (be patient)

Completed 10000 requests

Completed 20000 requests

Completed 30000 requests

Completed 40000 requests

Completed 50000 requests

Completed 60000 requests

Completed 70000 requests

Completed 80000 requests

Completed 90000 requests

Completed 100000 requests

Finished 100000 requests



Server Software:        Apache/2.4.4

Server Hostname:        192.168.1.199

Server Port:            80


Document Path:          /phpMyAdmin-4.1.5-all-languages

Document Length:        260 bytes


Concurrency Level:      1

Time taken for tests:   34.452 seconds

Complete requests:      100000

Failed requests:        0

Write errors:           0

Non-2xx responses:      100000

Total transferred:      52000000 bytes

HTML transferred:       26000000 bytes

Requests per second:    2902.60 [#/sec] (mean)

Time per request:       0.345 [ms] (mean)

Time per request:       0.345 [ms] (mean, across all concurrent requests)

Transfer rate:          1473.98 [Kbytes/sec] received


Connection Times (ms)

             min  mean[+/-sd] median   max

Connect:        0    0   0.0      0       1

Processing:     0    0   0.7      0     205

Waiting:        0    0   0.1      0      21

Total:          0    0   0.7      0     205


Percentage of the requests served within a certain time (ms)

 50%      0

 66%      0

 75%      0

 80%      0

 90%      0

 95%      0

 98%      0

 99%      0

100%    205 (longest request)

[root@localhost bin]#


结果,比我们的zend_opcache 还要好一些,但这些测试结果,与机器平台有很大的关系,可能不同的人测试有不同的结果


最后为了便于对来xcache的管理,我们可以在他的配置文件中的如图所示的字段进行如下修改,来方便对它进行性能上的控制,以admin用户为例:


在它要求我们输入MD5加密的密码时我们可以这么做


[root@localhost ~]# echo -n "123456"|md5sum

e10adc3949ba59abbe56e057f20f883e  -

[root@localhost ~]#


产生那堆数字就是加密后的结果,把它加进去


wKioL1Lg8ovD7CegAAA_qbZ9TVc065.jpg


重启Apache

[root@localhost]# service httpd restart

the httpd is stoping....

ok

the httpd is starting...

ok

如图



wKiom1Lg8q7TR3S6AABpsAVIeu0010.jpg


输入密码登录进去之后,我们可以看到很直观的控制参数展示,如图


wKioL1LhBSrRaSMKAAD-rzuLItQ055.jpg



比如缓存的大小,已经使用的和没有使用的等等;


还可以实现对xcache的日常检测及维护,如图,可以显示对xcache的各种诊断结果:

wKiom1LhBU_RxkqbAAD-jkT7Ndw874.jpg


关于php的加速,在互联网上有很多,自由的以及收费的各种软件,十分的齐全,在这我们就一这样两个典型的例子为例,希望能给大家带来帮助。

你可能感兴趣的:(网页加速)