mysql_connect()localhost和127.0.0.1之间的区别

时间:2013-04-21 17:51:08

标签: php mysql

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

<?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秒。

为什么?

1 个答案:

答案 0 :(得分:1)

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

定期使用UNIX域套接字应该更快,但在您的应用程序中似乎并非如此,因为使用UNIX域套接字连接需要很长时间。你修改了php.ini值mysql.default_socket还是pdo_mysql.default_socket?默认情况下它应该为空。如果没有,你可以发布这个价值吗?