2

现在我有一个配置文件如下:

<?php
return array(
    'server'=>'localhost',
    'username'=>'root',
    'password'=>'123456',
    'dbname'=>'duxiu',
    'charset'=>'utf8'
);

我对使用以下两种方法连接 mysql 所花费的时间感到困惑:

1.

<?php
class Mysql{
    private $conn;

    public function __construct($c){
        $this->conn=mysql_connect($c['server'],$c['username'],$c['password'],true) or die("连接出错");   
        mysql_select_db($c['dbname'],$this->conn);
        if(isset($c['charset'])){
            mysql_query("set names ".$c['charset'],$this->conn);
        }
    }
}
$c=require('config.php');
var_dump($c);
$db=new Mysql($c);

它花费了 1.012 秒。

2.当我使用如下:

<?php
class Mysql{
    private $conn;

    public function __construct($c){
        $this->conn=mysql_connect($c['server'],$c['username'],$c['password'],true) or die("connect error");   
        mysql_select_db($c['dbname'],$this->conn);
        if(isset($c['charset'])){
            mysql_query("set names ".$c['charset'],$this->conn);
        }
    }
}
$c=array('server'=>'127.0.0.1','username'=>'root','password'=>'123456','dbname'=>'duxiu','charset'=>'utf8');
var_dump($c);
$db=new Mysql($c);

现在它花费了 0.012 秒。

为什么?

4

1 回答 1

1

区别:当您使用 127.0.0.1 而不是 localhost 时,PHP 将尝试建立与 mysql 的 TCP 连接,而不是使用 UNIX 域套接字。

通常,使用 UNIX 域套接字应该更快,但在您的应用程序中似乎并非如此,因为使用 UNIX 域套接字连接需要很长时间。您是否修改了 php.ini 值mysql.default_socketpdo_mysql.default_socket?默认情况下它应该是空的。如果不是,您可以发布该值吗?

于 2013-04-21T17:55:55.243 回答