[директивы конфигурации РНР, отвечающие за работу с базами данных]материал подготовил: Александр Лозовюк 04.08.2005
В предыдущих статьях цикла мы начали рассматривать системные переменные или директивы РНР, которые устанавливаются через файл php.ini и позволяют тонко настроить среду исполнения РНР. большинство модулей и расширений, как поставляемых в стандартном дистрибутиве, так и в виде дополнительного набора PECL, используют файл php.ini для хранения своих конфигураций. Вместе с тем этот файл универсальный, то есть он изначально включает все директивы для большинства модулей, даже если они не подключены и не используются. В принципе это может немного сказаться на скорости загрузки (если PHP используется как CGI-модуль), поэтому в случае настройки РНР под себя (для конкретного проекта) вы можете удалить ту часть директив, которые гарантированно не используются. Но это достаточно тонкая и опасная процедура, ведь удаление нужной директивы может привести к неработоспособности РНР или неверной работе сайта, а то и к существенному ослаблению защиты сервера. Поэтому, прежде чем вносить какие-либо изменения в файл php.ini, советуем внимательно изучить его структуру и предназначение отдельных директив. В этом вам, надеемся, поможет этот цикл статей. Мы будем рассматривать конфигурацию РНР версии 5.0.х, так что, если у вас более ранняя версия, некоторые директивы могут отсутствовать. Напомним, что директивы для отдельных модулей находятся в секциях, обозначаемых как [название секции], например: [ODBC] отвечает за настройки связи с базами данных через механизм ODBC, а [MySQL] — за настройку параметров доступа к серверу MySQL.
имена директив могут отличаться от общесистемных — для отдельных модулей они могут иметь вид имя_модуля.имя_директивы. Так же как и для остальных параметров, директивы отдельных модулей можно в большинстве случаев устанавливать не только через php.ini, но и с помощью уже описанной функции ini_set().
При рассмотрении файла php.ini невольно приходит мысль, что по нему можно делать исследование на тему «На каких СУБД работают веб-сайты» — если РНР не умеет работать с какой-то СУБД (система управления базами данных), это почти стопроцентно означает, что она непригодна для массового рынка веб-сайтов. Основное место среди всех секций с директивами занимают настройки модулей для работы с базами данных. Мы уже рассмотрели в предыдущей статье директивы конфигурации ODBC, MySQL и MySQLI, сейчас же продолжим рассмотрение конфигураций доступа к PostgresSQL, Sybase, dbX и FrontBase.
[PostgresSQL]
Эта секция описывает конфигурацию популярной СУБД с открытым кодом (лицензия BSD) PostgreSQL, которая в принципе позиционируется как альтернатива MySQL. Если вашему приложению требуется особая функциональность от базы данных (абстрактные типы данных, транзакции, триггеры и хранимые процедуры, использующие в том числе и специальную версию языка Perl), то эта база будет идеальным выбором, особенно учитывая ее открытость. Для веб-приложений связка PostgreSQL+РНР может понадобиться в случае интеграции портала с уже существующей корпоративной системой или для создания каких-то уникальных сервисов, приложений электронной коммерции и т. д. Да, еще один момент — разработчики не рекомендуют использовать РНР версий 4.0.х совместно с PostgreSQL, так как в модуле для этой версии присутствует ряд недоработок — рекомендуется использовать версии 4.1 и выше. Несмотря на серьезную функциональность, набор директив довольно скромный.
pgsql.allow_persistent = [On/Off] — уже почти традиционная опция, разрешающая использовать постоянные соединения для уменьшения нагрузки на сервер СУБД. По умолчанию опция разрешена.
pgsql.auto_reset_persistent = [Off/On] — специфическая для этой БД директива, позволяющая механизму установления соединений определять работающие открытые постоянные соединения и использовать их или же автоматически удалять нерабочие (broken) ссылки и создавать новые соединения. Эти проверки работают только при вызове функции pg_pconnect() и немного снижают производительность, замедляя установку нового соединения, поэтому изначально опция