- 在使用
mysql_connect()
时,使用localhost
比使用127.0.0.1
连接速度更快吗? - PHP脚本与MySQL之间的连接类型是什么(使用
mysql_connect()
函数时)?是TCP/IP协议吗?
"localhost" 意味着本地套接字连接,而 127.0.0.1 是TCP/IP。是的,套接字比 TCP/IP 更快。
引用自 http://pl.php.net/mysql_connect
无论你指定 "localhost" 还是 "localhost:port" 作为服务器,MySQL 客户端库都会覆盖它并尝试连接到本地套接字(在 Windows 上是命名管道)。如果你想使用 TCP/IP,请使用"127.0.0.1"代替"localhost"。如果 MySQL 客户端库尝试连接到错误的本地套接字,则应该在 PHP 配置中设置正确的路径,并留空服务器字段。
不要使用localhost,建议使用127.0.0.1,因为Windows 7在IPv6和IPv4之间选择出现了问题。我尝试过,如果我使用localhost,页面需要重新加载约1秒钟(1.04秒),而当我使用127.0.0.1时,页面只需要重新加载50毫秒。这两者都是在Windows 7下使用的。
在Windows XP中使用无差别。
对于Unix系统,在/etc/mysql/my.cnf文件中的[client]
块后添加以下行:
protocol=tcp
Php网站提示:
注意:
无论何时您指定服务器为“localhost”或“localhost:port”,MySQL客户端库都会覆盖此并尝试连接到本地套接字(Windows上的命名管道)。如果要使用TCP / IP,请改用“127.0.0.1”而不是“localhost”。如果MySQL客户端库尝试连接到错误的本地套接字,则应在PHP配置中设置正确的路径并将服务器字段留空。
我猜速度差异应该很小,这不是你应该担心的事情。
本地主机并不比其他主机更快,反而可能稍微慢一些。
话虽如此,如果你要连接到别人的主机,明白我的意思吗?
谁能说哪一端的连接更容易失败呢?没有人知道。这就是为什么:
127.0.0.1 的 ping 比 localhost 更快。在任何终端上都可以试试。
对于 Mac,以下是解决方案:
在 MAC 上使用 localhost 而不是 127.0.0.1 连接到 MySQL。很长一段时间以来,我一直使用 127.0.0.1 在我的开发平台上连接到 MySQL,因为由于某种原因 localhost 不起作用。结果是因为 127.0.0.1 使用 TCP/IP,而 localhost 使用 sockets。php.ini 文件指向了错误的 mysql.sock 位置,所以你只需要更改它,重新启动 apache,就可以解决问题了!
Open php.ini: /private/etc/php.ini
Find the following line: mysql.default_socket = /var/mysql/mysql.sock
Replace with: mysql.default_socket = /tmp/mysql.sock
Restart apache: apachectl restart
sudo cp /private/etc/php.ini.default /private/etc/php.ini
通过http://madproject.com/general/connect-to-mysql-using-localhost-instead-of-127-0-0-1-on-a-mac/连接MySQL。