您的位置:首页 >php原生开发难度,php7和php5的原生开发程序性能对比
发布于2026-04-21 阅读(0)
扫一扫,手机访问
PHP 7正式发布至今,已经过去两年了。回想它刚问世那会儿,声势可谓不小——官方宣称性能比旧版本提升数倍,各大开源框架和系统在它上面跑起来,效率也是成倍增长。一时间,无论是技术媒体还是开发者社区,都对此津津乐道,甚至有些“煽风点火”的意味——当然,这里得说,是赞不绝口。
通常来说,对于手机系统升级,我往往是最后一批尝鲜的。原因很简单:不愿轻易踩坑。毕竟,连iOS和Android这种级别的系统都难免出现Bug,更何况是常年处于舆论风口浪尖的PHP呢?谨慎一点总没错。
不过,时机到了。今天,我们就来实际验证一下,PHP 7是否真如传说中那样“王炸”。

PHP官网提供了PHP 7的最新版本,大家可以自行下载。为了公平对比PHP 5和PHP 7(至于PHP 6,已被放弃,这里默默心疼一秒)的性能表现,我在不同目录下分别安装了这两个版本。
安装过程就略过不表了,无论是源码编译还是通过包管理工具安装,关键是要记清楚各自的安装路径。
来看一下两个版本的基本信息:
PHP 7:
# /usr/local/php7/bin/php -v
PHP 7.1.5 (cli) (built: May 13 2017 23:36:41) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
PHP 5:
# /usr/bin/php -v
PHP 5.6.30 (cli) (built: Jan 19 2017 22:31:39)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
环境说明:为了保证测试结果最具参考价值,本次测试直接在生产环境进行,力求逼近真实运行状况。
首先,我们创建一个简单的测试脚本 test.php:
$arr = array();
for ($i = 0; $i < 100000; $i++) {
$arr[$i] = $i;
}
$tmp = array();
foreach ($arr as $i) {
if ($i % 2 == 0) {
$is_exists = array_key_exists($i, $arr);
if ($is_exists) {
array_push($tmp, $i);
}
}
}
PHP 5版本测试:
time /usr/bin/php test.php
real 0m0.301s
user 0m0.239s
sys 0m0.050s
--------------------------
time /usr/bin/php test.php
real 0m0.310s
user 0m0.241s
sys 0m0.054s
--------------------------
time /usr/bin/php test.php
real 0m0.289s
user 0m0.238s
sys 0m0.050s
PHP 7版本测试:
time /usr/local/php7/bin/php test.php
real 0m0.087s
user 0m0.063s
sys 0m0.024s
-------------------------------------
time /usr/local/php7/bin/php test.php
real 0m0.106s
user 0m0.073s
sys 0m0.033s
--------------------------------------
time /usr/local/php7/bin/php test.php
real 0m0.083s
user 0m0.061s
sys 0m0.022s
数据不会说谎。从这三轮测试结果来看,在纯PHP脚本的运算性能上,PHP 7相比PHP 5,提升幅度达到了3到4倍。这个开局,相当不错。
光有纯计算还不够,数据库操作才是Web应用的重头戏。接下来,我们看看它在数据库操作上的表现。
首先,创建一个简单的用户表:
Table: test_user
Create Table: CREATE TABLE `test_user` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`name` char(100) NOT NULL DEFAULT '',
PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
插入一条测试数据:
insert into test_user (uid,name) values (1,"dada");
MariaDB [test]> select * from test_user;
+-----+------+
| uid | name |
+-----+------+
| 1 | dada |
+-----+------+
接着,创建数据库测试脚本 test_db.php。这里有个前提:确保两个PHP版本都已安装PDO扩展。检查一下:
/usr/bin/php -m|grep pdo
pdo_mysql
pdo_sqlite
/usr/local/php7/bin/php -m|grep pdo
pdo_mysql
pdo_sqlite
没问题,两个版本都已就位。(顺带一提,mysql扩展已经过时,PHP 7已彻底抛弃它,即便是mysqli,现在也更推荐使用PDO。)
脚本内容是通过PDO执行50万次查询,来对比性能:
$host = "yourHost";
$user = "yourUser";
$pass = "yourPass";
$db = "test";
$port = 3306;
try
{
$dbh = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
echo "Connected\n";
}
catch (Exception $e)
{
echo "Unable to connect: " . $e->getMessage() ."\n";
}
$sql = "select SQL_NO_CACHE * from test_user;";
$tmp = array();
for ($i=1; $i<=500000; $i++) {
$ret = $dbh->query($sql);
foreach ($ret as $row) {
$tmp['id'] = $row['id'];
$tmp['name'] = $row['name'];
}
}
PHP 5测试 test_db.php:
time /usr/bin/php test_db.php
real 0m48.396s
user 0m11.149s
sys 0m3.998s
real 0m51.447s
user 0m11.800s
sys 0m4.395s
real 0m51.517s
user 0m11.733s
sys 0m4.439s
PHP 7测试 test_db.php:
real 0m47.900s
user 0m9.875s
sys 0m4.130s
real 0m46.977s
user 0m9.760s
sys 0m3.983s
real 0m50.010s
user 0m10.268s
sys 0m4.307s
这次测试的负载更重——脚本执行了整整50万次查询。仔细看user时间(即CPU执行用户态代码的时间),PHP 7几乎每次都比PHP 5要少将近1秒。注意,是1秒,而不是1毫秒。在数据库密集操作场景下,这个优势已经相当明显。
综合以上两项测试,结论已经比较清晰了:无论是纯原生的脚本运算,还是涉及数据库的IO操作,PHP 7在性能上都全面超越了PHP 5。尤其在纯计算场景下,性能提升达到了3到4倍,这完全对得起它发布之初的“王炸”称号。对于仍在PHP 5上运行的项目来说,升级到PHP 7,无疑是提升应用性能最直接、最有效的手段之一。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9