Настройка во время выполнения
Поведение этих функций зависит от установок в 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
.
Имя | По умолчанию | Место изменения | Список изменений |
---|---|---|---|
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. |
Краткое разъяснение конфигурационных директив.
-
ifx.allow_persistent
boolean -
Разрешать или нет постоянные соединения Informix.
-
ifx.max_persistent
integer -
Максимальное количество постоянных соединений на процесс.
-
ifx.max_links
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().