Подключение к Mysql через Named Pipe (Windows)
Подключение через именованный pipe функцией mysql_connect в Windows висит давним багом в трекере PHP При этом есть отзывы, что периодически (в частности, в версиях PHP 5.3…) данная функциональность отваливается. Немного информации о подключении через Named Pipe (ИМХО, перевод “именованный пайп” менее лаконичен, а “именованный канал” может ввести в заблуждение) под катом.
В Windows реализованы так называемые Именованные каналы (Named Pipe) - во многом похожие на socket-ы UNIX-систем. Обращаться к ним можно по специальному пути вида
\\.\pipe\yourpipename
Для включения в MySQL возможности работы через именованный пайп добавляем в секцию [mysqld] файла my.ini (В Denwer располагается в Z:\usr\local\mysql-5.5\my.ini):
port=3306
# закомментировать, если подключения по сети не требуются.
skip-networking
enable-named-pipe
Не забываем перезапустить MySQL для применения изменений.
Для обращения к pipe используем стандартный механизм Windows:
On Windows, to use named pipes, you should use “.” (dot) as host, which will in turn use the default named pipe name \\.\pipe\MySQL (if you use the name in your code you should escape the slashes, if you use double quotes “\\\\.\\pipe\\MySQL”.
Ещё одна особенность связана с использованием open_basedir restriction.
- Named pipe will fail when open_basedir is in effect
Что ещё интереснее - подключение через PIPE не обязательно гарантирует выигрыш в скорости:
(Named pipes are slower than TCP/IP in many Windows configurations.)
Подключение PHPMyadmin к MySQL через Named Pipe
Учитывая всё вышесказанное, а также особенности экранирования бэкслеша в PHP, прописываем в конфиг phpmyadmin:
$cfg['Servers'][$i]['host'] = '.';
$cfg['Servers'][$i]['connect_type'] = 'socket';
$cfg['Servers'][$i]['socket'] = '\\\\.\\pipe\\yourpipename';
Ссылки:
https://bugs.php.net/bug.php?id=48082 - собственно баг в PHP
http://dev.mysql.com/doc/refman/5.0/en/connecting.html - подключение к MySQL
On Windows, you can force a MySQL client to use a named-pipe connection by specifying the –pipe or –protocol=PIPE option, or by specifying . (period) as the host name. If named-pipe connections are not enabled, an error occurs. Use the –socket option to specify the name of the pipe if you do not want to use the default pipe name.
Метки: mysql