Настройка во время выполнения

Поведение этих функций зависит от установок в php.ini.

Замечание:

Убедитесь, что драйверу ifx доступны переменные окружения INFORMIXDIR и INFORMIXSERVER и что директория INFORMIX/bin включена в PATH. Проверить можно запустив скрипт, содержащий команду phpinfo(). В выводе phpinfo() перечислены все установленые переменные окружения. Это работает и для CGI и для Apache mod_php. Необходимо задать эти переменные в скрипте запуска Apache.

Разделяемые библиотеки Informix также должны доступны загрузчику (проверьте LD_LIBRARY_PATH или ld.so.conf/ldconfig).

Замечание: Несколько замечаний по использованию BLOB (столбцы TEXT и BYTE)

BLOB адресуются по своему идентификатору. Запросы типа SELECT возвращают "blob id" для столбцов BYTE и TEXT. Контент данных полей можно получить с помощью "string_var = ifx_get_blob($blob_id);" если хотите сохранить его в памяти ("ifx_blobinfile(0);"). Если предпочитаете сохранить в файл, используйте "ifx_blobinfile(1);" и "ifx_get_blob($blob_id);", который вернет имя файла. Для получения контента BLOB используйте обычные функции работы с файлами.

Для запросов INSERT/UPDATE вам необходимо создать эти "blob id's" самостоятельно с помощью "ifx_create_blob();". После этого поместите BLOB в массив и замените в запросе соответствующие поля на знаки вопроса (?). Для запросов INSERT/UPDATE контент полей BLOB задается функцией ifx_update_blob().

Поведение столбцов BLOB можно изменить с помощью параметров конфигурации, которые можно менять во время исполнения:

переменная конфигурации: ifx.textasvarchar

переменная конфигурации: ifx.byteasvarchar

функции времени исполнения:

ifx_textasvarchar(0): использовать идентификаторы BLOB для запросов SELECT с типом TEXT

ifx_byteasvarchar(0): использовать идентификаторы BLOB для запросов SELECT с типом BYTE

ifx_textasvarchar(1): возвращать столбцы TEXT как будто они типа VARCHAR. В данном случае необходимость в использовании идентификатора BLOB отпадает.

ifx_byteasvarchar(1): возвращать столбцы BYTE как будто они типа VARCHAR. В данном случае необходимость в использовании идентификатора BLOB отпадает.

переменная конфигурации: ifx.blobinfile

функции времени исполнения:

ifx_blobinfile_mode(0): сохранение столбцов BYTE в памяти, идентификатор BLOB позволит получить их контент.

ifx_blobinfile_mode(1): сохранение столбцов BYTE в файл, идентификатор BLOB позволит получить имя файла.

Если вы установите ifx_text/byteasvarchar равным 1, вы сможете использовать TEXT и BYTE в запросах SELECT как обычные (но очень длинные) поля VARCHAR. Подобное использование бинарно безопасно, так что можете смело пользоваться. Если возвращаемые данные содержат что-то странное, то вы сами несете полную ответственность за результаты.

Если вы установили set ifx_blobinfile равным 1, используйте имя файла, возвращенное ifx_get_blob(..) для получения контента. Не забывайте УДАЛЯТЬ ВРЕМЕННЫЕ ФАЙЛЫ, СОЗДАННЫЕ INFORMIX для выгрузки BLOB. Каждая извлеченная строка создаст новый временный файл для каждого поля BYTE.

Местоположение временных файлов определяется переменной окружения "blobdir" и по умолчанию равно "." (текущая директория). Что-то типа: putenv(blobdir=tmpblob"); сильно облегчит последующую очистку временной директории. Имена временных файлов начинаются с "blb".

Замечание: Автоматическое обрезание данных "char" (SQLCHAR и SQLNCHAR)

Такое поведение можно задать переменной конфигурации

ifx.charasvarchar: если установлено в 1, конечные пробельные символы будут автоматически обрезаны.

Замечание: Значения NULL

Переменная конфигурации ifx.nullformat (и функция времени выполнения ifx_nullformat()), установленная в TRUE возвратит поля NULL как строку "NULL", если установлена в FALSE - вернет пустую строку. Эта настройка позволит различать пустые строки и NULL.

Настройки конфигурации Informix
Имя По умолчанию Место изменения Список изменений
ifx.allow_persistent "1" PHP_INI_SYSTEM Удалено в PHP 5.2.1.
ifx.max_persistent "-1" PHP_INI_SYSTEM Удалено в PHP 5.2.1.
ifx.max_links "-1" PHP_INI_SYSTEM Удалено в PHP 5.2.1.
ifx.default_host NULL PHP_INI_SYSTEM Удалено в PHP 5.2.1.
ifx.default_user NULL PHP_INI_SYSTEM Удалено в PHP 5.2.1.
ifx.default_password NULL PHP_INI_SYSTEM Удалено в PHP 5.2.1.
ifx.blobinfile "1" PHP_INI_ALL Удалено в PHP 5.2.1.
ifx.textasvarchar "0" PHP_INI_ALL Удалено в PHP 5.2.1.
ifx.byteasvarchar "0" PHP_INI_ALL Удалено в PHP 5.2.1.
ifx.charasvarchar "0" PHP_INI_ALL Удалено в PHP 5.2.1.
ifx.nullformat "0" PHP_INI_ALL Удалено в PHP 5.2.1.
Для подробного описания констант PHP_INI_*, обратитесь к разделу Где могут быть установлены параметры конфигурации.

Краткое разъяснение конфигурационных директив.

ifx.allow_persistent boolean

Разрешать или нет постоянные соединения Informix.

ifx.max_persistent integer

Максимальное количество постоянных соединений на процесс.

Максимальное количество соединений на процесс, включая постоянные.

ifx.default_host string

Хост для соединения по умолчанию, если не задан в ifx_connect() или ifx_pconnect(). Не применяется в безопасный режим.

ifx.default_user string

Пользователь по умолчанию, если не задан в ifx_connect() ifx_pconnect(). Не применяется в безопасный режим.

ifx.default_password string

Пароль по умолчанию, если не задан в в ifx_connect() или ifx_pconnect(). Не применяется в безопасный режим.

ifx.blobinfile boolean

Если хотите помещать поля BLOB в файл, установите в TRUE. Если в память, то установите в FALSE. Можно переопределить во время исполнения с функцией ifx_blobinfile_mode().

ifx.textasvarchar boolean

Если хотите возвращать TEXT как обычную строку, установите в TRUE. Если хотите получать идентификатор BLOB, установите в FALSE. Можно переопределить во время исполнения с функцией ifx_textasvarchar().

ifx.byteasvarchar boolean

Если хотите возвращать BYTE как обычную строку, установите в TRUE. Если хотите получать идентификатор BLOB, установите в FALSE. Можно переопределить во время исполнения с функцией ifx_textasvarchar().

ifx.charasvarchar boolean

Установите как TRUE, если хотите обрезать конечные пробельные символы у CHAR.

ifx.nullformat boolean

Если хотите получать NULL как строку "NULL" - установите в TRUE. Если хотите получать NULL как пустую строку - установите в FALSE. Можно переопределить во время исполнения с функцией ifx_nullformat().