Март 04, 2007

Разница между localhost и 127.0.0.1 в php

Если ваш сервер MySQL установлен локально, на одной машине с выполняющимися скриптами, то всегда в скриптах при подключении надо указывать в качестве host: localhost.

Бывают случаи когда указывается в качестве хоста айпи 127.0.0.1, либо hostname этого же сервера, либо какой то айпи этого сервера.

Это неправильно, т.к. php приподключении на localhost открывает соединение через unix-socket (напр. /tmp/mysql.sock), а не использует TCP/IP соединение. Если же вы написали что то отличное от localhost, то используется соединение с mysql сервером через TCP/IP сокет.

Это в разы медленнее и ненадежнее. Во-первых, вы этим увеличиваете количество используемых сетевых сокетов, которых в некоторых ситуациях может не хватать.

Во-вторых, Unix-socket в разы шустрее TCP/IP и потребляет меньше ресурсов. Так же на него меньше ограничений и меньше посредников между клиентом и сервером типа файрвола и т.д.

На небольших нагрузках разница не замечается. Но когда идет приличное число коннектов, то начинает все серъезно глючить.

1 комментариев:

Alex комментирует...

Спасибо, раньше думал что и так и так через tcp сокет идет коннект.

Даже встречал советы при коннекте указывать путь к сокету.