前言
为了在上线前保证router
的安全和高效。罐头
最近反复在优化代码,手忙脚乱的,周五差点还把公司给的这台笔记本给弄炸了。幸好运维大大给我修好了。使用了AB工具进行压测之后,发现结果并不让人满意。开始着手尝试一下PHP7,或者是Yaf之类的。
基本任务:在同一台虚拟机装两个版本的PHP,便于比较和测试。
准备
- 先备份一下虚拟机,做一个快照
- 再备份一下
PHP 5.6
的配置
- 准备
php 7
的安装
安装过程
1 2 3 4
| [root] [root] [root] [root]
|
1 2 3 4
| error: ODBC header file '/usr//include/sqlext.h' not found! 原来缺少一个unixODBC库 [root]
|
1 2 3 4 5
| collect2: ld returned 1 exit status make: *** [sapi/cli/php] Error 1 主要原因:没給到要 link 的 iconv 函式库参数 解决方法:编辑Makefile 大约77 行左右的地方: EXTRA_LIBS = ..... -lcrypt 在最后加上 -liconv
|
1 2 3 4 5 6 7 8 9 10 11
| [root] PHP 7.0.11 (cli) (built: Sep 28 2016 04:55:47) ( ZTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies --- [root] PHP 5.6.22 (cli) (built: Jun 3 2016 11:44:17) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend Guard Loader v3.3, Copyright (c) 1998-2014, by Zend Technologies
|
1 2 3 4 5 6
| [root] [root] [root] [root] [root]
|
1 2 3 4 5 6 7 8
| [root] user = www group = www listen = /tmp/php7-cgi.sock listen.owner = www listen.group = www listen.mode = 0660
|
1 2 3
| [root] Starting php-fpm done
|
1 2 3 4 5 6 7 8 9
| …… location ~ .*\.php$ { include fastcgi.conf; fastcgi_pass unix:/tmp/php7-cgi.sock; //使用PHP7 fastcgi_index index.php; } ……
|
压测
硬件平台
- CPU: Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
- RAM: 1GB
软件环境
- nginx/1.10.0
- php 5.6.22
- php 7.0.11
- yii2
比较结果
版本 |
Requests per second [#/s] |
Time per request [ms] |
php 5.6.22 |
131.35 |
761.335 |
php 7.0.11 |
231.38 |
432.196 |
版本 |
Requests per second [#/s] |
Time per request [ms] |
php 5.6.22 |
96.47 |
1036.601 |
php 7.0.11 |
146.56 |
682.297 |
- 复杂操作(路由+ORM+模板渲染)
ab -c 100 -n 1000
版本 |
Requests per second [#/s] |
Time per request [ms] |
php 5.6.22 |
58.07 |
1721.985 |
php 7.0.11 |
95.82 |
1043.623 |
- 制造一个10万的数组,并且逐个使用
array_key_exists
遍历1 2 3 4 5 6 7 8 9
| [root]# time php test.php real 0m0.171s user 0m0.121s sys 0m0.046s [root]# time /usr/local/php7/bin/php test.php real 0m0.031s user 0m0.023s sys 0m0.007s
|
由于个人虚拟机比较破,选取的样本数量虽然也不多,但是还是能看出性能差异的!有空再来介绍PHP7的新特性