Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: MySQL/PHP: Named pipes или TCP?  (Прочитано 31604 раз)
0 Пользователей и 1 Гость смотрят эту тему.
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« : 01-03-2011 14:13 » 

Хочу использовать named pipes для коннекта PHP (5.2.6) к локальной MySQL (5.1.45) базе на сервере с Windows 2003.
В my.ini стоит:
Код: (INI) my.ini
enable-named-pipe
socket = "MySQL"
Подключение:
Код: (PHP)
mysql_connect(":MySQL", "user", "pass");
Однако, захожу на страничку, обновляю её и вижу:
Код:
C:\>netstat -no | find /c "127.0.0.1:3306"
10
C:\>netstat -no | find "127.0.0.1:3306"
  TCP    127.0.0.1:1304         127.0.0.1:3306         TIME_WAIT       0
  TCP    127.0.0.1:1333         127.0.0.1:3306         TIME_WAIT       0
  TCP    127.0.0.1:1350         127.0.0.1:3306         TIME_WAIT       0
  TCP    127.0.0.1:1362         127.0.0.1:3306         TIME_WAIT       0
  TCP    127.0.0.1:1380         127.0.0.1:3306         TIME_WAIT       0
  TCP    127.0.0.1:1390         127.0.0.1:3306         TIME_WAIT       0
  TCP    127.0.0.1:1406         127.0.0.1:3306         TIME_WAIT       0
  TCP    127.0.0.1:1425         127.0.0.1:3306         TIME_WAIT       0
  TCP    127.0.0.1:1470         127.0.0.1:3306         TIME_WAIT       0
  TCP    127.0.0.1:1487         127.0.0.1:3306         TIME_WAIT       0
Если обновить страничку еще пару раз, то это число увеличится.
Есть ли какие-то известные проблемы с таким подключением?

Через ODBC другие приложения подключаются к сокету нормально. То есть он живой.
В php.ini все, что относится к MySQL уже пробовал ставить в заведомо неправильное:
Код: (INI) php.ini
[MySQL]
mysql.default_port = 0000
mysql.default_socket =MySQL
mysql.default_host =
[MySQLi]
mysqli.default_port = 0000
mysqli.default_socket =MySQL
mysqli.default_host =

Очевидно что оно идет по TCP, но почему??
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 01-03-2011 16:23 » 

В качестве имени хоста укажи "localhost".

Из Си API:

Цитата
The value of host may be either a host name or an IP address. If host is NULL or the string "localhost", a connection to
the local host is assumed: For Windows, the client connects using a shared-memory connection, if the server has sharedmemory
connections enabled. Otherwise, TCP/IP is used. For Unix, the client connects using a Unix socket file. For local connections,
you can also influence the type of connection to use with the MYSQL_OPT_PROTOCOL or
MYSQL_OPT_NAMED_PIPE options to mysql_options(). The type of connection must be supported by the server. For a
host value of "." on Windows, the client connects using a named pipe, if the server has named-pipe connections enabled. If
named-pipe connections are not enabled, an error occurs.

Из PHP API "Mysql":

Цитата
    The MySQL server. It can also include a port number. e.g. "hostname:port" or a path to a local socket e.g. ":/path/to/socket" for the localhost.

    If the PHP directive mysql.default_host is undefined (default), then the default value is 'localhost:3306'. In SQL safe mode, this parameter is ignored and value 'localhost:3306' is always used.

Цитата
    Note:

    Whenever you specify "localhost" or "localhost:port" as server, the MySQL client library will override this and try to connect to a local socket (named pipe on Windows). If you want to use TCP/IP, use "127.0.0.1" instead of "localhost". If the MySQL client library tries to connect to the wrong local socket, you should set the correct path as in your PHP configuration and leave the server field blank.
« Последнее редактирование: 01-03-2011 16:30 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #2 : 02-03-2011 22:28 » 

Нет, localhost не помог. Проблема решилась указанием точки вместо имени сервера.
Код: (PHP)
mysql_connect(".:MySQL", "user", "pass");
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 03-03-2011 04:21 » 

Фигня какая-то. Не должно так быть и в доке не указано.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #4 : 03-03-2011 07:26 » 

Ага, не должно. Я тоже доку читал - потому и спрашивал что за фигня Улыбаюсь
На каких-то форумах откопал что надо точку ставить вместо localhost - причем именно в Windows.
А, с другой стороны, ты же сам цитировал:
Из Си API:
Цитата
For a host value of "." on Windows, the client connects using a named pipe, if the server has named-pipe connections enabled.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 03-03-2011 07:42 » new

Цитировать то цитировал, но не читал Отлично
Точнее, я там только отдельные предложения хотел цитировать, но скопировал абзац целиком.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines