localhost против 127.0.0.1 в mysql_connect () - PullRequest
       14

localhost против 127.0.0.1 в mysql_connect ()

47 голосов
/ 15 сентября 2010
  1. Использует ли localhost in mysql_connect() подключение быстрее, чем 127.0.0.1?
  2. Каков тип соединения между сценарием PHP и mySQL (при использовании функции mysql_connect())? Это TCP / IP?

Ответы [ 6 ]

66 голосов
/ 15 сентября 2010
  1. Отличается между Windows и Linux.Если вы используете сокет домена unix, это будет немного быстрее, чем при использовании TCP / IP (из-за меньших накладных расходов).
  2. Windows по умолчанию использует TCP / IP, тогда как Linux пытается использоватьUnix Domain Socket, если вы выбираете localhost и TCP / IP, если вы берете 127.0.0.1.
15 голосов
/ 15 сентября 2010

«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, и оставить поле сервера пустым.

13 голосов
/ 26 сентября 2012

Нет, 127.0.0.1 рекомендуется использовать, потому что в Windows 7 есть проблема с выбором между IPv6 и IPv4. Я попробовал это, и если я использовал localhost, страница перезагружалась около 1 с (1,04 с), а когда я использовал 127.0.0.1, страница перезагружалась 50 мс. Оба были использованы под Windows 7.
В Windows XP это не имеет значения.

0 голосов
/ 24 октября 2013

Для macs вот решение:

Подключитесь к MySQL, используя localhost вместо 127.0.0.1 на MAC.Долгое время я подключался к MySQL на моей платформе разработки с 127.0.0.1, потому что по какой-то причине localhost не работал.Оказывается, это потому, что 127.0.0.1 использует TCP / IP, а localhost использует сокеты.Файл 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

Примечание.INI-файл, вам нужно скопировать предоставленный по умолчанию php.ini.default

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/

0 голосов
/ 19 декабря 2012

Для Unix добавьте в блок клиента после [client] в /etc/mysql/my.cnf эту строку:

protocol=tcp
0 голосов
/ 15 сентября 2010

Php site говорит:

Примечание:

Всякий раз, когда вы указываете "localhost" или "localhost: port" в качестве сервера, клиентская библиотека MySQL переопределяет это и пытается подключитьсяв локальный сокет (именованный канал в Windows).Если вы хотите использовать TCP / IP, используйте «127.0.0.1» вместо «localhost».Если клиентская библиотека MySQL пытается подключиться к неправильному локальному сокету, вы должны установить правильный путь, как в вашей конфигурации PHP, и оставить поле сервера пустым.

Я думаю, разница в скорости будет слишком низкойчто это то, о чем ты не должен беспокоиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...