Проблема с открытием соединения.

  • Автор темы Chapaev
  • Дата начала

Chapaev

Guest
Проблема с открытием соединения.

Идея такая: хотим соединиться с БД в скрипте PHP. В данном случае пользую PostgreSQL, но ошибка возникает не из-за нее. А ошибка вот:
"Warning: pg_connect(): Cannot create new link. Too many open links (0). in /var/www/html/testx.php on line 3". Эта ошибка выдается независимо от того, запущена БД или нет и какие порты (сокеты) она слушает. Особенно радует число 0 в качестве числа открытых соединений.

Максимум links и persistent links стоит для БД -1 (т.е. неограниченно). В чем дело - не пойму. При этом клиент psql работает с БД на сервере, т.е. тут что-то с PHP, скорее всего.

На всякий случай привожу опции сборки PHP (не говорите потом, что я маньяк!):
'./configure' 'i386-redhat-linux' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--prefix=/usr' '--with-config-file-path=/etc' '--enable-force-cgi-redirect' '--disable-debug' '--disable-short-tags' '--enable-pic' '--disable-rpath' '--enable-inline-optimization' '--enable-xslt' '--with-xslt-sablot' '--enable-dbase--with-db3' '--with-dom=/usr' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-gd' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-regex=system' '--with-ttf' '--with-xml' '--with-expat-dir=/usr' '--with-zlib' '--with-layout=GNU' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-discard-path' '--enable-track-vars' '--enable-trans-sid' '--without-oci8' '--with-pgsql=/usr/local/pgsql' '--enable-memory-limit' '--enable-versioning' '--with-apxs=/usr/sbin/apxs'

(кто хочет просмотреть дополнительную информацию: http://www.molod.ru/info.php)
 

Demiurg

Guest
а без php получается коннектится к БД ?
 

Chapaev

Guest
Да, именно. т.е. клиент psql работает нормально и сокет /tmp/.s.PGSQL.5432 открыт для записис/чтения всем.

Т.е. создается впечатление, что поставлено ограничение на число открытых соединений для PHP. Но где я его ограничил? Загружал свою виндовую домашнюю конфигурацию PHP на сервер - не помогает (почти одно и то же).
 

Chapaev

Guest
Еще интересно, что на попытку связаться с сервером MySQL честно говорит, что не может найти такого сервера (его и нет). Но про остановленный сервер PostgreSQL так не говорится, т.е. имеет место все та же, описанная выше, ошибка.
 

Chapaev

Guest
Ок. Сам вопросил - сам и отвечу, если кому интересно. ;)

Такое любопытное поведение PHP демонстрирует, если поддержка PostgreSQL (ну и скорее прочих БД) скомпилирована в PHP статически и одновременно вызывается загрузка динамического модуля PGSQL. Т.е. имеет место ошибка конфигурации PHP, однако её природа не так-то и очевидна.
 
Сверху