重要提示:我在https://bugs.php.net/bug.php?id=76565报告了PHP 7.2的糟糕结果。我在PHP 7.0.30和PHP 7.1.13上都尝试过,问题是完全一样的:与PHP 5.4.16相比,查询要慢得多。
PHP 7.2非常快,速度惊人。进行非常简单的基准测试(例如循环执行数千次并执行一些基本的算术运算)表明,PHP 7.2的速度很容易比PHP 5.4.16(这是默认的PHP版本,可以使用“ yum”安装在Centos 7上)快3倍。 )。
出于某些奇怪的原因,执行数据库查询至少要慢2倍-至少。
我启动了2台CENTOS服务器-完全相同。然后在一个我安装了PHP 5.4.16,在另一个我安装了PHP 7.2(两个都运行最新版本的MariaDB)。
然后,我创建了一个简单的数据库并执行以下基准测试:
<?php
include("connect.php");
$microtime = microtime(true);
for ($i=0;$i<100;$i++) {
$query = "SELECT * FROM table WHERE id = 'xxx'";
$result = mysqli_query($connection,$query);
$data = mysqli_fetch_array($result);
}
echo microtime(true) - $microtime;
?>
我在每个服务器上至少执行了5次此代码,从而在两次测试之间存在一些延迟。他们很清楚:
PHP 7.2运行大约需要4.5秒 PHP 5.4.16运行大约需要1.1秒
那又怎样?查询db时,PHP 7.2是否存在我不应该考虑的问题?
编辑
回复一些评论:
1)安装PHP 5.4.16,我只是这样做了:
yum install php php-mysql mariadb
2)安装PHP 7.2.7我先安装了REMI,然后做到了:
yum install yum-utils
yum-config-manager --enable remi-php72
yum install php php-mysql mariadb
使用以下代码建立与数据库的连接:
$connection = mysqli_connect("localhost","root","----");
mysqli_select_db($connection ,"database");
我知道有关使用“ localhost”的错误,但是我也尝试了“ 127.0.0.1”,结果是相同的,因此在这种情况下使用“ localhost”不会改变任何内容。
我现在刚刚检查过,两台服务器都具有相同的CPU(使用cat /proc/cpuinfo
进行了双重检查)和相同的SSD。使用命令free
时,Ram相同,并且RAM消耗非常接近。
答案 0 :(得分:0)
我无法再现这种差异。
您似乎有一些非常大的表/行,因为在小型RHEL-7.5 VM上,我必须将循环增加到10000,才能有1/2秒的时间