mysql_connect()本地主机和127.0.0.1之间的区别 [英] mysql_connect() Difference between localhost and 127.0.0.1

查看:119
本文介绍了mysql_connect()本地主机和127.0.0.1之间的区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

为什么?

解决方案

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

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

Now I have a config file as follows:

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

I'm cunfused about the time it spends when I using tow methods to connect mysql follows:

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);

It spends 1.012 second.

2.when I using as following:

<?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);

Now it spends 0.012 second .

Why?

解决方案

Difference: When you are using 127.0.0.1 instead of localhost, PHP will try to establish a TCP connection to mysql rather than using a UNIX domain socket.

Regulary it should be faster to use UNIX domain sockets but it seems in your application this is not the case as it takes very long to connect using the UNIX domain socket. Have you modified the php.ini value mysql.default_socket or pdo_mysql.default_socket? It should be empty by default. If not can you post that value?

这篇关于mysql_connect()本地主机和127.0.0.1之间的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆