Localhost против 127.0.0.1

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

Ответ 1

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

Ответ 2

"localhost" означает локальное соединение сокетов, а 127.0.0.1 - TCP/IP. И да, сокеты быстрее, чем TCP/IP.

Cite from http://pl.php.net/mysql_connect

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

Ответ 3

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

Ответ 4

Сайт Php говорит:

Примечание:

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

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

Ответ 5

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

protocol=tcp

Ответ 6

Для macs, здесь решение:

Подключитесь к MySQL, используя localhost вместо 127.0.0.1 на MAC. В течение долгого времени Ive подключался к MySQL на моей платформе разработки с 127.0.0.1, потому что по какой-то причине localhost не работал. Оказывается, потому что 127.0.0.1 использует TCP/IP, а localhost использует сокеты. Файл php.ini указывает на неправильное место для mysql.sock, поэтому все, что вам нужно сделать, это изменить его, перезапустить apache и voila!

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

Примечание. Если у вас нет файла php.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/