Postgres, разработанный в оригинале департаментом UC Berkeley Computer Science
Department, был пионером многих объектно-ориентированных концепций, ставших
теперь доступными в некоторых коммерческих БД. Он предоставляет поддержку языка
SQL92/SQL99, целостности транзакций и расширяемости типов. PostgreSQL это
открытый ресурс, потомок оригинального Berkeley-кода.
PostgreSQL это продукт, доступный бесплатно. Для
использования поддержки PostgreSQL вам необходим PostgreSQL 6.5 или новее. PostgreSQL 7.0
или новее - для всех возможностей модуля PostgreSQL. PostgreSQL поддерживает
многие кодировки символов, включая кодировку многобайтных символов. Текущая
версия и информация о PostgreSQL находятся на http://www.postgresql.org/.
Чтобы включить поддержку PostgreSQL, необходима опция --with-pgsql[=DIR] при компиляции
PHP. Если модуль совместно используемых/shared объектов доступен, PostgreSQL-модуль
может быть загружен с использованием директивы extension в файле
php.ini или функции dl(). Поддерживаемые ini-директивы описаны в файле
php.ini-dist, поставляемом вместе с исходным кодом дистрибутива.
Предупреждение!
Использование модуля PostgreSQL с PHP 4.0.6 не рекомендуется из-за жучка в
коде обработки уведомляющих сообщений. Используйте 4.1.0 или новее.
Предупреждение!
Имена PostgreSQL-функций будут изменены в релизе 4.2.0 для подтверждения соответствия существующим стандартам кодировки. Большая
часть новых имён будет иметь дополнительные символы подчёркивания, например, pg_lo_open(). Некоторые функции переименовываются для
обеспечения целостности. например, pg_exec() в pg_query(). Старые имена можно использовать в 4.2.0 и в некоторых релизах 4.2.0,
но они могут быть удалены в будущем.
Не все функции поддерживаются во всех построениях/builds. Это зависит от версии вашей
libpq (The PostgreSQL C Client interface) и от того, как libpq
скомпилирована. Если имеется отсутствующая функция, libpq не поддерживает возможности, требуемые для этой функции.
Важно также, чтобы вы использовали libpq более новую, чем PostgreSQL
Server, с которым соединяетесь. Если вы используете libpq более старую, чем ожидает PostgreSQL Server, у вас будут проблемы.
Начиная с версии 6.3 (03/02/1998), PostgreSQL использует по умолчанию сокет
домена unix. TCP-порт НЕ открывается по умолчанию. В таблице описаны эти новые
возможности соединений. Этот сокет можно найти в in /tmp/.s.PGSQL.5432.
Данная опция может быть включена флагом ’-i’ для postmaster, и его значением будет : "прослушивать
TCP/IP-сокеты, а также сокеты Unix-домена".
Таблица 2. Postmaster и PHP
Postmaster
PHP
Статус
postmaster &
pg_connect("dbname=MyDbName");
OK
postmaster -i &
pg_connect("dbname=MyDbName");
OK
postmaster &
pg_connect("host=localhost dbname=MyDbName");
Невозможно соединиться с PostgreSQL server: connectDB() терпит неудачу:
Работает ли postmaster и принимает ли TCP/IP (with -i) соединение по ’localhost’ и порту ’5432’? в
/path/to/file.php на строке 20.
postmaster -i &
pg_connect("host=localhost dbname=MyDbName");
OK
Соединение с PostgreSQL-сервером может быть установлено следующими парами значений в командной строке:
$conn = pg_connect("host=myHost port=myPort tty=myTTY options=myOptions
dbname=myDB user=myUser password=myPassword ");
Предыдущий синтаксис: $conn = pg_connect ("host", "port", "options", "tty", "dbname")
теперь не рекомендуется.
Переменные окружения влияют на поведение PostgreSQL server/client. Например, PostgreSQL-модуль
будет искать переменную окружения PGHOST, если hostname отсутствует в строке
соединения. Поддерживаемые переменные окружения отличаются в разных версиях.
См. детали в PostgreSQL Programmer’s Manual (libpq - Environment Variables).
Убедитесь, что вы установили переменные окружения для соответствующего пользователя. Используйте
$_ENV или getenv()
для проверки того, какие переменные окружения доступны текущему процессу.
Начиная работу с PostgreSQL 7.1.0, вы можете сохранять 1GB в поле типа text.
В более старых версиях могут быть ограничения на размер блоков (по умолчанию
было 8KB, максимум был 32KB, определяемые на этапе компиляции).
Для использования интерфейса больших объектов/large object (lo) необходимо включать
lo-функции внутри блока транзакции. Блок транзакции начинается с SQL-оператора BEGIN, и, если транзакция была верной, заканчивается
COMMIT или END. Если транзакция терпит неудачу, она должна быть закрыта с помощью
ROLLBACK или ABORT.
Пример 2. Использование больших объектов (Large Objects)