PHP 72对数据库查询的速度太慢

时间:2018-07-02 19:02:14

标签: php

重要提示:我在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消耗非常接近。

1 个答案:

答案 0 :(得分:0)

我无法再现这种差异。

您似乎有一些非常大的表/行,因为在小型RHEL-7.5 VM上,我必须将循环增加到10000,才能有1/2秒的时间

  • 0.55中的PHP版本5.4.16”(使用php-mysql和libmysqlclient)
  • 0.65中的PHP 5.4.16版”(使用php-mysqlnd)
  • 0.66中的PHP 5.5.38版”
  • 0.65中的PHP版本5.6.36”
  • 0.67中的PHP 7.0.30版”
  • 0.67中的PHP版本7.1.19”
  • 0.69中的PHP版本7.2.7”
  • PHP版本7.3.0alpha2 zh 0.55