【问题标题】:Why does PDO take 1 second to connect?为什么 PDO 需要 1 秒才能连接?
【发布时间】:2012-11-13 09:19:05
【问题描述】:

我使用 MySQL Workbench 来运行查询。运行它们几乎不需要任何时间。但是,当我通过 PDO 连接到数据库时,连接需要超过一秒钟!为什么?

<?php

$host = "localhost";
$db = "localhost";
$user = "root";
$pass = "";

$mtime = explode(" ",microtime());
$starttime = $mtime[1] + $mtime[0];

$conn = new PDO("mysql:host=$host;dbname=$db",$user,$pass);

$mtime = explode(" ",microtime());
$totaltime = (($mtime[1] + $mtime[0]) - $starttime);
echo $totaltime * 1000;

这个输出:

1008.975982666

【问题讨论】:

  • 工作台是否通过localhost127.0.0.1 或其他名称连接?连接速度问题通常与 DNS 查找问题有关。如果你有一个 shell(这是一个类似 Unix 的机器,dig localhost 会很快返回吗?localhost 应该被定义为 127.0.0.1 但是主机文件可能有些奇怪。
  • 调用microtime(true)获取当前时间的浮点值,摆脱这整个explode-time-calculation-thingie。
  • @MichaelBerkowski 我要试试!
  • @Sven 刚从网上复制粘贴过来的..
  • 一个名为“localhost”的数据库对我来说听起来很奇怪。你确定这是对的。

标签: php pdo


【解决方案1】:

在 windows vista 和更新版本上使用 127.0.0.1 而不是 localhost。

【讨论】:

  • 太棒了!有效!这是为什么?当我输入localhost时,加载不需要1秒?浏览器是否缓存了 DNS?
  • 不太确定,但我记得读过Windows首先尝试本地主机的IPv6地址(:::1),如果失败则127.0.0.1
  • @dev-null-dweller 这是有道理的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
  • 1970-01-01
  • 2020-05-23
  • 2015-11-04
  • 1970-01-01
  • 2019-11-30
  • 1970-01-01
相关资源
最近更新 更多