Учебник PHP

         

XXVII. Функции обработки ошибок и логинга


Введение

Имеются функции для обработки ошибок и логинга. Они позволяют определять ваши собственные правила обработки ошибок, а также модифицировать способ логинга ошибок. Это позволяет настроить работу с ошибками так, как вам это необходимо.

С помощью функций логинга вы можете направлять сообщения на другие машины, по email (или email на шлюз пэйджеров!), в системные logs, etc., так что вы сможете выборочно записывать и отслеживать самые важные части ваших приложений и web-сайтов.

Функции сообщения об ошибках позволяют специализировать уровень и тип ошибок, начиная с простых уведомлений и заканчивая специализированными функциями, возвращаемыми при возникновении ошибок.


Требования

Эти функции всегда доступны как часть стандартного модуля.


Установка

Нет специальных требований по установке этих функций, так как они являются частью ядра РНР.


Предопределённые константы

Эти константы являются частью ядра РНР и всегда доступны.

Таблица 1. Ошибки и логинг
Значение КонстантаОписание1E_ERROR (integer) Фатальные ошибки времени выполнения/run-time. Указывает на ошибки, которые не могут быть устранены, такие как проблемы выделения памяти. Выполнение скрипта останавливается.2E_WARNING

(integer) Предупреждения времени выполнения (нефатальные ошибки). Выполнение скрипта не останавливается. 4E_PARSE(integer) Ошибки разбора при компиляции. ошибки разбора должны генерироваться только разборщиком. 8E_NOTICE (integer) Уведомления времени выполнения. При работе скрипта возникло нечто, что может указывать на ошибку, но может также появиться и при нормальном выполнении скрипта. 16E_CORE_ERROR (integer) Фатальные ошибки, возникающие при начальном старте РНР. Напоминает E_ERROR, но генерируется ядром PHP. 32E_CORE_WARNING (integer) Предупреждения (нефатальные ошибки), возникающие при начальном старте РНР. Напоминает E_WARNING, но генерируется ядром PHP. Только в PHP 4.64 E_COMPILE_ERROR (integer) Фатальные ошибки компиляции. Напоминает E_ERROR, но генерируется машиной Zend Scripting Engine. Только в PHP 4.128 E_COMPILE_WARNING (integer) Предупреждения времени компиляции (нефатальные ошибки). Напоминает E_WARNING, но генерируется машиной Zend Scripting Engine. Только в PHP 4.256E_USER_ERROR (integer) Генерируемое пользователем сообщение об ошибке. Напоминает E_ERROR, но генерируется в РНР-коде путём использования РНР-функции trigger_error(). Только в PHP 4.512 E_USER_WARNING (integer) Генерируемое пользователем предупреждение. Напоминает E_WARNING, но генерируется в РНР-коде путём использования РНР-функции trigger_error(). Только в PHP 4.1024 E_USER_NOTICE (integer) Генерируемое пользователем уведомление. Напоминает E_NOTICE, но генерируется в РНР-коде путём использования РНР-функции trigger_error(). Только в PHP 4.2047 E_ALL (integer) Все ошибки и предупреждения, если поддерживаются.

См. также

Дополнительно см. раздел Обработка ошибок.

Содержание
error_log - отправляет сообщение об ошибке
error_reporting - устанавливает, о каких РНР-ошибках сообщается
restore_error_handler - восстанавливает предыдущую функцию-обработчик ошибок
set_error_handler - устанавливает пользовательскую функцию-обработчик ошибок
trigger_error - генерирует сообщение об ошибке/предупреждение/уведомление пользовательского уровня
user_error - генерирует сообщение об ошибке/предупреждение/уведомление пользовательского уровня

LXXXII. Функции выполнения программы


Введение

Эти функции предоставляют средства для выполнения системных команд и средства для того, чтобы сделать выполнение этих команд безопасным.


Требования

Эти функции всегда доступны как часть стандартного модуля.


Установка

Нет специальных требований по установке этих функций, так как они являются частью ядра РНР.


Установка

Это расширение не определяет никаких директив конфигурации.


Типы ресурсов

Это расширение не определяет никакие типы ресурсов.


Предопределённые константы

Это расширение не определяет никаких констант.

См. также

Эти функции также тесно связаны с операцией backtick.

Содержание
escapeshellarg - escape-ирует строку для использования в качестве аргумента оболочки
escapeshellcmd - escape-ирует метасимволы оболочки
exec - выполняет внешнюю программу
passthru - выполняет внешнюю программу и выводит необработанный вывод
proc_close - закрывает процесс открытый proc_open и возвращает exit-код этого процесса
proc_open - выполняет команду и открывает указатели файла для ввода/вывода
shell_exec - выполняет команду в оболочке и возвращает полный вывод как строку
system - выполняет внешнюю программу и отображает вывод

XVIII. Функции FrontBase


Введение

Эти функции дают доступ к серверам БД FrontBase. Дополнительно о FrontBase см. http://www.frontbase.com/.

Документация о FrontBase находится на http://www.frontbase.com/cgi-bin/WebObjects/FrontBase.woa/wa/productsPage?currentPage=Documentation.

Поддержка Frontbase была введена в PHP 4.0.6.


Требования

Чтобы использовать эти функции, вы обязаны установить сервер БД FrontBase или как минимум клиентские библиотеки fbsql. Вы можете получить FrontBase по адресу http://www.frontbase.com/.


Установка

Чтобы иметь доступ к этим функциям, вы обязаны скомпилировать PHP с поддержкой fbsql путём использования опции --with-fbsql. Если вы используете эту опцию без специфицирования пути к fbsql, PHP ищет клиентские библиотеки fbsql в месте установки по умолчанию для данной платформы. Те, кто установил FrontBase в нестандартное место, должны всегда специфицировать путь к fbsql:--with-fbsql=/path/to/fbsql. Это заставит PHP использовать клиентские библиотеки, установленные FrontBase, и исключит конфликты.


Типы ресурсов


Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

FBSQL_ASSOC (integer)
FBSQL_NUM (integer)
FBSQL_BOTH (integer)
FBSQL_LOCK_DEFERRED (integer)
FBSQL_LOCK_OPTIMISTIC (integer)
FBSQL_LOCK_PESSIMISTIC (integer)
FBSQL_ISO_READ_UNCOMMITTED (integer)
FBSQL_ISO_READ_COMMITTED (integer)
FBSQL_ISO_REPEATABLE_READ (integer)
FBSQL_ISO_SERIALIZABLE (integer)
FBSQL_ISO_VERSIONED (integer)
FBSQL_UNKNOWN (integer)
FBSQL_STOPPED (integer)
FBSQL_STARTING (integer)
FBSQL_RUNNING (integer)
FBSQL_STOPPING (integer)
FBSQL_NOEXEC (integer)
FBSQL_LOB_DIRECT (integer)
FBSQL_LOB_HANDLE (integer)
Содержание
fbsql_affected_rows - получает количество рядов, задействованных в предыдущей операции FrontBase
fbsql_autocommit - включает или отключает autocommit (автоподтверждение транзакций)
fbsql_change_user - изменяет действующего пользователя активного соединения
fbsql_close - закрывает соединение с FrontBase
fbsql_commit - подтверждает транзакцию с БД
fbsql_connect - открывает соединение с FrontBase-сервером
fbsql_create_blob - создаёт BLOB
fbsql_create_clob - создаёт CLOB
fbsql_create_db - создаёт БД FrontBase
fbsql_data_seek - перемещает внутренний результирующий указатель
fbsql_database_password - устанавливает или запрашивает пароль для БД FrontBase
fbsql_database - получает или устанавливает имя БД, используемое в соединении
fbsql_db_query - отправляет FrontBase query/запрос
fbsql_db_status - получает статус данной БД
fbsql_drop_db - удаляет БД FrontBase
fbsql_errno — возвращает числовое значение сообщения об ошибке предыдущей операции FrontBase
fbsql_error — возвращает текст сообщения об ошибке предыдущей операции FrontBase
fbsql_fetch_array - извлекает результирующий ряд как ассоциативный массив, числовой массив, либо и тот, и другой
fbsql_fetch_assoc - извлекает результирующий ряд как ассоциативный массив
fbsql_fetch_field - получает информацию столбца из результата и возвращает её как объект
fbsql_fetch_lengths - получает длину каждого вывода в результате
fbsql_fetch_object - извлекает результирующий ряд как объект
fbsql_fetch_row - получает результирующий ряд как перечислимый массив
fbsql_field_flags - получает флаги, ассоциированные со специфицированным полем в результате
fbsql_field_len — возвращает длину специфицированного роля
fbsql_field_name - получает имя специфицированного поля в результате
fbsql_field_seek - устанавливает результирующий указатель на специфицированное смещение поля
fbsql_field_table - получает имя таблицы, в которой находится специфицированное поле
fbsql_field_type - получает тип специфицированного поля в результате
fbsql_free_result - освобождает результирующую память
fbsql_get_autostart_info - пока нет описания
fbsql_hostname - получает или устанавливает имя хоста, используемое в соединении
fbsql_insert_id - получает id, сгенерированный в предыдущей операции INSERT
fbsql_list_dbs - выводит список БД, доступных на FrontBase-сервере
fbsql_list_fields - выводит список результирующих полей FrontBase
fbsql_list_tables - выводит список таблиц в БД FrontBase
fbsql_next_result - перемещает внутренний результирующий указатель на следующий результат
fbsql_num_fields - получает количество полей в результате
fbsql_num_rows - получает количество рядов в результате
fbsql_password - получает или устанавливает user password, используемый в соединении
fbsql_pconnect - открывает постоянное соединение с FrontBase-сервером
fbsql_query - отправляет FrontBase query
fbsql_read_blob - читает BLOB из БД
fbsql_read_clob - читает CLOB из БД
fbsql_result - получает результирующие данные
fbsql_rollback - откатывает транзакцию в данной БД
fbsql_select_db - выбирает БД FrontBase
fbsql_set_lob_mode - устанавливает режим запрашивания LOB для результирующего набора FrontBase
fbsql_set_transaction - устанавливает блокировку и изоляцию транзакции
fbsql_start_db - стартует БД на локальном или удалённом сервере
fbsql_stop_db - останавливает БД на локальном или удалённом сервере
fbsql_tablename - получает табличное имя поля
fbsql_username - получает или устанавливает host user, используемого в соединении
fbsql_warnings - включает или отключает предупреждения FrontBase

XXXI. Функции Forms Data Format


Введение

Forms Data Format (FDF) это формат для обработки форм в PDF-документах. Вам необходимо прочесть документацию http://partners.adobe.com/asn/developer/acrosdk/forms.html, чтобы узнать больше о том, что такое FDF и как его использовать.

Общая идея FDF напоминает HTML-формы. Разница в основном в формате передачи данных на сервер при нажатии копки submit (это формат Form Data Format) и в формате самой формы (которая имеет формат Portable Document Format, PDF). Процессинг FDF-данных является одной из возможностей, предоставляемой fdf-функциями. Но есть и ещё кое-что.
Можно также взять существующую PDF-форму и заполнить поля ввода (input) данными без модификации самой формы. Тогда можно будет создать FDF-документ (fdf_create()), установить значения каждого поля ввода (fdf_set_value()) и ассоциировать его с PDF-формой (fdf_set_file()). Наконец, он отправляется браузеру с MimeType application/vnd.fdf. Компонент Acrobat reader вашего браузера распозн́ает MimeType, прочитает ассоциированную PDF-форму и заполнит её данными из FDF-документа.

Если вы просмотрите FDF-документ в текстовом редакторе, вы увидите объект catalogue с именем FDF. Такой объект может содержать количество вхождений Fields, F, Status etc. Чаще всего используются вхождения Fields, которое указывает на список input-полей, и F, которое содержитfilename PDF-документа, которому принадлежат эти данные. Эти вхождения называются в FDF-документации как /F-Key или /Status-Key. Модификация этих вхождений выполняется функциями вроде fdf_set_file() и fdf_set_status(). Поля модифицируются функциями вроде fdf_set_value(), fdf_set_opt() etc.


Требования

Вы обязаны загрузить FDF toolkit с http://partners.adobe.com/asn/developer/acrosdk/forms.html

Установка

Вы обязаны скомпилировать PHP с--with-fdftk[=DIR].

Примечание: если у вас появляются проблемы с конфигурированием PHP с поддержкой fdftk, проверьте, находятся ли header-файл FdfTk.h и библиотека libFdfTk.so в соответствующих местах. Они должны быть в каталогах fdftk-dir/include и в fdftk-dir/lib. Этих директорий не будет, если вы просто распакуете дистрибутив FdfTk.


Конфигурация

Это расширение не определяет никаких директив конфигурации.


Типы ресурсов


Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

FDFValue (integer)
FDFStatus (integer)
FDFFile (integer)
FDFID (integer)
FDFFf (integer)
FDFSetFf (integer)
FDFClearFf (integer)
FDFFlags (integer)
FDFSetF (integer)
FDFClrF (integer)
FDFAP (integer)
FDFAS (integer)
FDFAction (integer)
FDFAA (integer)
FDFAPRef (integer)
FDFIF (integer)
FDFEnter (integer)
FDFExit (integer)
FDFDown (integer)
FDFUp (integer)
FDFFormat (integer)
FDFValidate (integer)
FDFKeystroke (integer)
FDFCalculate (integer)

Примеры

В следующем примере показано простое вычисление данных формы.

XXIX. Функции filePro


Введение

Эти функции дают доступ read-only к данным в БД filePro.

filePro это зарегистрированная торговая марка fP Technologies, Inc. Вы можете найти информацию о filePro по адресу http://www.fptech.com/

Содержание
filepro_fieldcount - определяет, сколько полей имеется в БД filePro
filepro_fieldname - получает имя поля
filepro_fieldtype - получает тип поля
filepro_fieldwidth - получает ширину поля
filepro_retrieve - запрашивает данные из filePro-БД
filepro_rowcount - определяет, сколько рядов имеется в filePro-БД
filepro - читает и проверяет файла отображения

XXX. Функции файловой системы


Введение


Требования

Эти функции доступны как часть стандартного модуля, который всегда доступен.


Инсталяция

Для использования этих функций не нужно никакой специальной установки, они являются частью ядра PHP.


Конфигурация времени выполнения

Это расширение не определяет никаких директив конфигурации.


Типы ресурсов



Предопределённые константы

Это расширение не определяет никаких констант.


См. также

разделы Директория и Выполнение программы.

Содержание
basename — возвращает компонент filename пути
chgrp - изменяет file group
chmod - изменяет file mode
chown - изменяет file owner
clearstatcache - очищает stat-кэш файла
copy - копирует файл
delete - (здесь заглушка статьи учебника)
dirname — возвращает компонент directory name пути
disk_free_space — возвращает доступное пространство в директории
disk_total_space — возвращает общий размер директории
diskfreespace - псевдоним disk_free_space()
fclose - закрывает указатель открытого файла
feof - проверяет, находится ли указатель файла в точке end-of-file
fflush - очищает вывод в файл
fgetc - получает символ от указателя файла
fgetcsv - получает строку от указателя файла и разбирает CSV-поля
fgets - получает строку от указателя файла
fgetss - получает строку от указателя файла и вырезает тэги HTML
file_exists - проверяет, существует ли файл
file_get_contents - читает весь файл в строку
file_get_wrapper_data - запрашивает header/meta-данные из указателей "обёрнутых" файлов
file_register_wrapper - регистрирует URL-оболочку/wrapper, реализованную как PHP-класс
file - читает весь файл в массив
fileatime - получает время последнего доступа к файлу
filectime - получает inode время изменения файла
filegroup - получает file group
fileinode - получает file inode
filemtime - получает время последнего изменения файла
fileowner - получает file owner
fileperms - получает file permissions
filesize - получает размер файла
filetype - получает тип файла
flock - переносимая информирующая блокировка файла
fopen - открывает файл или URL
fpassthru - выводит все оставшиеся в указателе файла данные
fputs - записывает в указатель файла
fread - Binary-safe/безопасное в двоичном режиме чтение файла
fscanf - разбирает ввод из файла в соответствии с форматом
fseek - ищет в указателе файла
fstat - получает информацию о файле с использованием указателя открытого файла
ftell - сообщает позицию чтения/записи указателя файла
ftruncate - усекает файл до заданного размера
fwrite - Binary-safe запись в файл
glob - находит pathnames, совпадающие с патэрном
is_dir - сообщает, является ли filename директорией
is_executable - сообщает, является ли filename исполняемым
is_file - сообщает, является ли filename регулярным файлом
is_link - сообщает, является ли filename символической ссылкой
is_readable - сообщает, является ли filename читаемым
is_uploaded_file - сообщает, был ли файл загружен через HTTP POST
is_writable - сообщает, можно ли записывать в filename
is_writeable - сообщает, можно ли записывать в filename
link - создаёт жёсткую ссылку
linkinfo - получает информацию о ссылке
lstat - выдаёт информацию о файле или символической ссылке
mkdir - создаёт директорию
move_uploaded_file - перемещает загруженный файл в новое место
parse_ini_file - разбирает файл конфигурации
pathinfo — возвращает информацию о пути файла
pclose - закрывает process file pointer/указатель процесса файла
popen - открывает process file pointer
readfile - выводит файл
readlink — возвращает цель/target символической ссылки
realpath — возвращает канонизированный абсолютный pathname
rename - переименовывает файл
rewind - возвращает в начало указатель файла
rmdir - удаляет директорию
set_file_buffer - устанавливает буферизацию файла на данном указателе файла
stat - выдаёт информацию о файле
symlink - создаёт символическую ссылку
tempnam - создаёт файл с уникальным именем
tmpfile - создаёт временный файл
touch - устанавливает время доступа и изменения файла
umask - изменяет текущую umask
unlink - удаляет файл

XXXII. Функции FriBiDi


Введение


Требования


Установка


Типы ресурсов


Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

FRIBIDI_CHARSET_UTF8 (integer)
FRIBIDI_CHARSET_8859_6 (integer)
FRIBIDI_CHARSET_8859_8 (integer)
FRIBIDI_CHARSET_CP1255 (integer)
FRIBIDI_CHARSET_CP1256 (integer)
FRIBIDI_CHARSET_ISIRI_3342 (integer)
Содержание
fribidi_log2vis - конвертирует логическую строку в визуальную

XXXIII. Функции FTP


Введение

Функции этого расширения реализуют клиентский доступ к файловым серверам, называемый File Transfer Protocol FTP, как определено в http://www.faqs.org/rfcs/rfc959.html.


Требования

Эти функции всегда доступны как часть стандартного модуля.


Установка

Чтобы использовать FTP-функции с вашей конфигурацией PHP, вы должны добавить опцию
--enable-ftp при установке PHP 4, и --with-ftp при использовании PHP 3.


Установка

Это расширение не определяет никаких директив конфигурации.


Типы ресурсов

Это расширение использует один тип ресурсов, который является ссылкой-идентификатором ftp-соединения.


Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

FTP_ASCII (integer)
FTP_TEXT (integer)
FTP_BINARY (integer)
FTP_IMAGE (integer)
FTP_TIMEOUT_SEC (integer)

Примеры

XXXIV. Функции работы с функциями


Введение

Эти функции выполняют различные операции при работе с функциями.


Требования

Эти функции всегда доступны как часть стандартного модуля.


Установка

Нет специальных требований по установке этих функций, так как они являются частью ядра РНР.


Конфигурация

Это расширение не определяет никаких директив конфигурации.


Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
call_user_func_array - вызывает пользовательскую функцию, заданную массивом параметров
call_user_func - вызывает пользовательскую функцию, заданную первым параметром
create_function - создаёт анонимную (lambda-стиль) функцию
func_get_arg - возвращает элемент из списка аргументов
func_get_args - возвращает массив, образующий список аргументов функции
func_num_args - возвращает количество аргументов, переданных функции
function_exists - возвращает TRUE, если данная функция определена
get_defined_functions - возвращает массив всех определённых функций
register_shutdown_function - регистрирует функцию для выполнения при отключении/shutdown
register_tick_function - регистрирует функцию для выполнения при каждом тике/tick
unregister_tick_function - разрегистрирует функцию для выполнения при каждом тике

XXXV. Функции Gettext


Введение

Функции gettext реализуют NLS (Native Language Support) API, который может использоваться для интернационализации ваших PHP-приложений. Просмотрите документацию о gettext для вашей системы по адресу http://www.gnu.org/manual/gettext/index.html.


Требования

Для использования этих функций вы обязаны загрузить и установить пакет GNU gettext с http://www.gnu.org/software/gettext/gettext.html


Установка

Чтобы включить поддержку GNU gettext в ваше построение PHP, вы обязаны добавить опцию
--with-gettext[=DIR], где DIR это директория установки gettext, по умолчанию это /usr/local.


Конфигурация

Это расширение не определяет никаких директив конфигурации.


Типы ресурсов

Это расширение не определяет никакие типы ресурсов.


Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
bind_textdomain_codeset - специфицирует кодировку символов, в которой будет написано сообщение, возвращённое из каталога сообщений DOMAIN
bindtextdomain - устанавливает путь к домену
dcgettext - переопределяет domain для отдельного просмотра
dcngettext - множественная версия dcgettext
dgettext - переопределяет текущий домен
dngettext - множественная версия dgettext
gettext - просматривает сообщение в текущем домене
ngettext - множественная версия gettext
textdomain - устанавливает домен по умолчанию

XXXVI. Функции GMP


Введение

Эти функции позволяют работать целыми числами произвольной точности с использованием библиотеки GNU MP.

Эти функции были введены в PHP 4.0.4.

Примечание: в основном функции GMP принимают GMP-количество аргументов, определённое далее как resource. Однако большая часть этих функций принимает также числовые и строковые аргументы, которые можно конвертировать в числа. Также, если если имеется более быстрая функция, работающая с целочисленными аргументами, она может использоваться вместо более медленной функции, если предоставляемые аргументы являются целыми числами. Это делается прозрачно, так что вы можете использовать целые числа в каждой функции, ожидающей GMP-числа. См. также функцию gmp_init().

Предупреждение!Если вы хотите явно специфицировать большое целое число, специфицируйте его как строку. Если вы это не сделаете, PHP будет интерпретировать сначала целочисленный литерал, возможно, с потерей точности, даже перед использованием GMP.

Требования

Вы можете загрузить библиотеку GMP с http://www.swox.com/gmp/. Этот сайт содержит также учебник по GMP.

Вам понадобится версия GMP 2 или новее для использования этих функций. Некоторые функции могут потребовать использования самой последней версии библиотеки GMP.


Установка

Чтобы эти функции работали, вы обязаны скомпилировать PHP с поддержкой GMP, используя опцию
--with-gmp
.


Конфигурация

Это расширение не определяет никаких директив конфигурации.


Типы ресурсов

Это расширение не определяет никакие типы ресурсов.


Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

GMP_ROUND_ZERO (integer)
GMP_ROUND_PLUSINF (integer)
GMP_ROUND_MINUSINF (integer)

Примеры

XXXVII. Функции HTTP


Введение

Эти функции позволяют манипулировать выводом, отправляемым обратно удалённому браузеру по протоколу HTTP.


Требования

Эти функции всегда доступны как часть стандартного модуля.


Установка

Нет специальных требований по установке этих функций, так как они являются частью ядра РНР.


Конфигурация

Это расширение не определяет никаких директив конфигурации.


Типы ресурсов

Это расширение не определяет никакие типы ресурсов.


Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
header - высылает сырой HTTP-header
headers_sent - возвращает TRUE, если header'ы отправлены
setcookie - отправляет куку

XXXIX. Функции Hyperwave API


Введение

Hyperwave был разработан IICM в Graz. Он начинался как Hyper-G и сменил название на Hyperwave при коммерциализации (насколько помню, это было в 1996).

Hyperwave это не бесплатная программа. Текущая версия, 5.5, доступна на www.hyperwave.com. Можно запросить оценочную версию с ограниченным временем использования (30 дней).

Hyperwave это информационная система, аналогичная database (HIS, Hyperwave Information Server). Она сфокусирована на хранении и обслуживании документов. Документом может быть любой блок данных, которые могут сохраняться в файле. Каждый документ сопровождается записью объекта. Запись объекта/object record содержит метаданные документа. Метаданные это список атрибутов, который может быть расширен пользователем. Некоторые атрибуты всегда устанавливаются Hyperwave-сервером, другие могут модифицироваться пользователем.


Требования

С 2001 г. доступен Hyperwave SDK. Он поддерживает Java, JavaScript и C++. Данное расширение PHP базируется на интерфейсе C++. Чтобы активировать поддержку hwapi в PHP, вы должны сначала установить Hyperwave SDK и сконфигурировать PHP с опцией --with-hwapi=<dir$gt;.


Классы

API, предоставляемый расширением HW_API, является полностью объектно-ориентированным. Он очень похож на интерфейс C++ Hyperwave SDK. Он состоит из следующих классов.

HW_API

HW_API_Object

HW_API_Attribute

HW_API_Error

HW_API_Content

HW_API_Reason

Некоторые базовые классы вроде HW_API_String, HW_API_String_Array, etc., которые имеются в Hyperwave SDK, не реализованы, поскольку PHP имеет для них полноценную замену.

Каждый класс имеет метод, имя которого идентично имени его двойника из Hyperwave SDK. Передача аргументов такой функции отличается от всех других расширений PHP и напоминает C++ API пакета HW SDK. Вместо передачи различных параметров, они все помещаются в ассоциативный массив и передаются как один параметр. Имена ключей идентичны именам, задокументированным в HW SDK. Общие параметры перечислены ниже. Если необходимы другие параметры, они будут документированы, если это необходимо.

objectIdentifier - имя или id объекта, например, "rootcollection", "0x873A8768 0x00000002".

parentIdentifier - имя или id объекта, который считается родительским.

object - экземпляр класса HW_API_Object.

parameters - экземпляр класса HW_API_Object.

version - версия объекта.

mode - целочисленное значение - способ выполнения операции.

attributeSelector - массив строк, каждая из которых содержит имя атрибута. Это используется, если вы запрашиваете запись объекта и хотите включить некоторые атрибуты.

objectQuery - запрос на выбор определённого объекта из списка объектов. Используется для уменьшения количества объектов, выдаваемых функциями вродеhw_api->children() или hw_api->find().


Интеграция с Apache

Интеграция с Apache и, возможно, другими серверами уже описана в модуле Hyperwave Modul, который был первым расширением для соединения с Hyperwave Server.

Содержание
hw_api_attribute->key — возвращает ключ/key атрибута
hw_api_attribute->langdepvalue — возвращает значение для данного языка
hw_api_attribute->value — возвращает значение атрибута
hw_api_attribute->values — возвращает все значения атрибута
hw_api_attribute - создаёт экземпляр класса hw_api_attribute
hw_api->checkin - проверяет in-объект
hw_api->checkout - проверяет out-объект
hw_api->children — возвращает потомка объекта
hw_api_content->mimetype — возвращает mimetype
hw_api_content->read - читает содержимое
hw_api->content — возвращает содержимое объекта
hw_api->copy - копирует физически
hw_api->dbstat — возвращает статистику о сервере БД
hw_api->dcstat — возвращает статистику о сервере кэша документов
hw_api->dstanchors — возвращает список всех якорей назначения
hw_api->dstofsrcanchors — возвращает назначение якоря-источника
hw_api_error->count - возвращает количество причин/reasons
hw_api_error->reason — возвращает reason ошибки
hw_api->find - ищет объекты
hw_api->ftstat — возвращает статистику fulltext-сервере
hwapi_hgcsp — возвращает объект класса hw_api
hw_api->hwstat — возвращает статистику о Hyperwave-сервере
hw_api->identify - входит/Log в Hyperwave-сервер
hw_api->info — возвращает информацию о конфигурации сервера
hw_api->insert - вставляет новый объект
hw_api->insertanchor - вставляет новый объект типа anchor
hw_api->insertcollection - вставляет новый объект типа collection
hw_api->insertdocument - вставляет новый объект типа document
hw_api->link - создаёт ссылку на объект
hw_api->lock - блокирует объект
hw_api->move - перемещает объект между коллекциями
hw_api_content - создаёт новый экземпляр класса hw_api_content
hw_api_object->assign - клонирует объект
hw_api_object->attreditable - проверяет, может ли атрибут редактироваться
hw_api_object->count - возвращает количество атрибутов
hw_api_object->insert - вставляет новый атрибут
hw_api_object - создаёт новый экземпляр класса hw_api_object
hw_api_object->remove - удаляет атрибут
hw_api_object->title — возвращает название атрибута
hw_api_object->value — возвращает значение атрибута
hw_api->object - запрашивает информацию атрибута
hw_api->objectbyanchor — возвращает объект, к которому принадлежит anchor
hw_api->parents — возвращает родителя объекта
hw_api_reason->description — возвращает описание reason
hw_api_reason->type — возвращает тип reason/причины
hw_api->remove - удаляет объект
hw_api->replace - заменяет объект
hw_api->setcommitedversion - подтверждает версию, отличную от последней версии
hw_api->srcanchors — возвращает список всех anchor-источников
hw_api->srcsofdst — возвращает источник объекта назначения
hw_api->unlock - разблокирует блокированный объект
hw_api->user — возвращает пользователя объекта
hw_api->userlist — возвращает список всех вошедших/logged in пользователей

XXXVIII. Функции Hyperwave


Введение

Hyperwave был разработан IICM в Graz. Он начинался как Hyper-G и сменил название на Hyperwave при коммерциализации (насколько помню, это было в 1996).

Hyperwave это не бесплатная программа. Текущая версия, 5.5, доступна на www.hyperwave.com. Можно запросить оценочную версию с ограниченным временем использования (30 дней).

Hyperwave это информационная система, аналогичная database (HIS, Hyperwave Information Server). Она сфокусирована на хранении и обслуживании документов. Документом может быть любой блок данных, которые могут сохраняться в файле. Каждый документ сопровождается записью объекта. Запись объекта/object record содержит метаданные документа. Метаданные это список атрибутов, который может быть расширен пользователем. Некоторые атрибуты всегда устанавливаются Hyperwave-сервером, другие могут модифицироваться пользователем.
Атрибут это пара name/value (имя/значение) в форме name=value. Полная запись объекта содержит столько пар, сколько необходимо пользователю. Имя атрибута не обязано быть уникальным, например, заголовок/title может появляться несколько раз в записи объекта. Это имеет смысл, если вы хотите специфицировать title на различных языках. На этот случай имеется соглашение о том, что каждому значению title предшествует аббревиатура языка из двух букв с последующим двоеточием, например, 'en:Title in English' или 'ge:Titel in deutsch'. Другие атрибуты вроде описания или ключевых слов являются потенциальными кандидатами. Вы можете также заменить аббревиатуру языка любой другой строкой, отделив её двоеточием от остальной части атрибута.

Каждая запись объекта имеет строковое представление, где каждая пара name/value отделена символами новой строки. Расширение Hyperwave знает также второе представление, которое является ассоциативным массивом с именем атрибута в качестве ключа. Многоязычные значения атрибутов сами образуют другой ассоциативный массив с ключом - аббревиатурой языка. Фактически любой многоязычный атрибут образует ассоциативный массив со строкой, в качестве значения ключа, слева от двоеточия в значении атрибута. (Это ещё не полностью реализовано. Только Title, Description и Keyword атрибута считаются пока что его свойствами.)

Помимо документов, все гиперссылки, содержащиеся в документе, также хранятся как записи объекта. Гиперссылки в документе будут удалены из него и сохранены в отдельных объектах, когда документ будет вставляться в БД. Запись объекта ссылки содержит информацию о том, где она стартует и где заканчивается. Чтобы получить оригинал документа, вам нужно будет запросить документ без ссылок и список ссылок и вновь вставить их в него (функции hw_pipedocument() и hw_gettext() сделают это для вас. Преимущества отделения ссылок от объектов очевидны. Если объект, на который указывает ссылка, изменяет своё имя, ссылка легко может быть модифицирована. Документ, содержащий ссылку, вообще не будет затронут. Вы можете даже добавить ссылку в документ без его изменения.

Сказать, что hw_pipedocument() и hw_gettext() автоматически делают вставку ссылки, было бы слишком просто. Вставка ссылок предполагает определённую иерархию документов. На web-сервере это делается файловой системой, но Hyperwave имеет свою собственную иерархию, и имена не отражают позицию объекта в этой иерархии. Следовательно, создание ссылок требует прежде всего отображения из иерархии и пространства имён Hyperwave в соответствующее web-пространство имён web-иерархии.
Принципиальное отличие Hyperwave от web в том, что имеется ясное различие именами и иерархией Hyperwave. Имя не содержит никакой информации о позиции объекта в иерархии. В web - имя содержит также и информацию о том, где объект размещён в иерархии. Это даёт два различных способа отображения. Либо иерархия и имя Hyperwave Hyperwave-объекта отражаются в URL, либо только имя. Для упрощения используется второй подход. Hyperwave-объект с именем 'my_object' отображается в 'http://host/my_object', независимо от его положения в иерархии Hyperwave. объект с именем 'parent/my_object' может быть потомком объекта 'my_object' в иерархии Hyperwave, хотя в пространстве имён web это выглядит необычно, и пользователь может быть удивлён. Предотвратить это можно только выбором осмысленных имён объектов.

После принятия данного решения возникает вторая проблема. Как вызвать PHP? URL http://host/my_object не вызовет PHP-скрипт, если вы не сообщите вашему web-серверу, что нужно переписать URL на, к примеру, 'http://host/php3_script/my_object', и скрипт 'php3_script' вычислит переменную $PATH_INFO и запросит объект с именем 'my_object' с Hyperwave-сервер. Здесь есть только один недостаток, который можно легко устранить. Перезапись любого URL не позволит получить доступ к любым другим документам на web-сервере. PHP-скрипт для поиска на Hyperwave-сервере применить невозможно. Следовательно, вам понадобится как минимум второе правило перезаписи для исключения определённых URL вроде, к примеру, начинающихся с http://host/Hyperwave. Это будет разделением пространства имён между web и Hyperwave-сервером.

Основываясь на вышеприведённом механизме, ссылки вставляются в документы.

Это несколько усложняется, если PHP запущен не как серверный модуль или CGI-скрипт, а как отдельное приложение, например, для дампа содержимого Hyperwave-сервера на CD-ROM. В таком случае имеет смысл сохранить иерархию Hyperwave и отобразить её в файловую систему. Это конфликтует с именами объектов, если они отражают свою собственную иерархию (например, избрав имена, включающие '/'). Следовательно, '/' должен быть заменён другим символом, например, '_'.

Сетевой протокол для соединения с Hyperwave-сервером называется HG-CSP (Hyper-G Client/Server Protocol). Он основан на сообщениях для инициации определённых действий, например, получения записи объекта. В ранних версиях Hyperwave Server предоставлялись два клиента (Harmony, Amadeus) для соединения с сервером. Они были убраны при коммерциализации Hyperwave. В качестве замены был предоставлен так называемый wavemaster. Это wavemaster является чем-то вроде конвертера протоколов из HTTP в HG-CSP. Идея состоит в том, чтобы делать всё администрирование БД и визуализацию документов через web-интерфейс. Wavemaster реализует набор заглушек/placeholders для определённых акций, чтобы специализировать интерфейс. Этот набор заглушек называется PLACE Language. В PLACE отсутствуют многие возможности реального языка программирования, и любое расширение его только расширяет список заглушек. Это привело к использованию JavaScript, IMO которого не делает жизнь легче.

Добавление поддержки Hyperwave в PHP должно заполнить отсутствующий интерфейс специализации. Он реализует все сообщения, как определено HG-CSP, но предоставляет также и более мощные команды для, например, запрашивания полных документов.

Hyperwave имеет свою собственную терминологию для именования определённых блоков информации. Она была широко использована и расширена. Почти все функции оперируют с данными одного из следующих типов.

ID объекта: Уникальное целочисленное значение для каждого объекта в Hyperwave-сервере. Это также один из атрибутов записи объекта (ObjectID). ids объектов часто используются как параметр ввода для специфицирования объекта.

Запись объекта/object record: Строка с парами атрибут-значение в форме attribute=value. Пары разделены символами возврата каретки. Запись объекта можно легко конвертировать в массив объекта функцией hw_object2array(). Несколько функций возвращают записи объектов. Имена таких функций заканчиваются на obj.

массив объекта: Ассоциированный массив со всеми атрибутами объекта. Ключом является имя атрибута. Если атрибут появляется более чем однократно в записи объекта, это даст другой ассоциированный или индексированный массив. Атрибуты, зависящие от языка (вроде title, keyword, description), сформируют ассоциативный массив с ключами - аббревиатурами языков. Все иные множественные атрибуты сформируют индексированный массив. Функции PHP никогда не возвращают массивы объектов.

hw_document: Это совершенно новый тип данных, содержащий реальный документ, например, HTML, PDF etc. Он оптимизирован для HTML-документов, но может использоваться для любого формата.

Некоторые функции, возвращающие массив записей объекта, возвращают также ассоциативный массив со статистической информацией о нём. Этот массив является последним элементом массива записей объекта. Статистический массив содержит следующие вхождения:

Hidden

Количество записей объектов с атрибутом PresentationHints, установленным в Hidden.

CollectionHead

Количество записей объектов с атрибутом PresentationHints, установленным в CollectionHead.

FullCollectionHead

Количество записей объектов с атрибутом PresentationHints, установленным в FullCollectionHead.

CollectionHeadNr

Индекс в массиве записей объекта с атрибутом PresentationHints, установленным в CollectionHead.

FullCollectionHeadNr

Индекс в массиве записей объекта с атрибутом PresentationHints, установленным в FullCollectionHead.

Total

Всего: Количество записей объекта.


Интеграция с Apache

Расширение Hyperwave лучше всего использовать, когда PHP скомпилирован как Apache-модуль. В этом случае Hyperwave-сервер может быть скрыт от пользователей почти полностью, если Apache использует свою машину перезаписи. Следующие инструкции разъясняют это.

Поскольку PHP с поддержкой Hyperwave, встроенный в Apache, предполагается заменить Hyperwave-решением на базе Wavemaster, я буду считать, что Apache-сервер будет работать только как Hyperwave web-интерфейс. Это не обязательно, но упрощает конфигурацию.
Концепция довольно проста. Прежде всего вам необходим PHP-скрипт, вычисляющий переменную PATH_INFO и рассматривающий её значение как имя Hyperwave-объекта. Назовём этот скрипт 'Hyperwave'. URL http://your.hostname/Hyperwave/name_of_object возвратит Hyperwave-объект с именем 'name_of_object'. В зависимости от типа объекта, скрипт должен реагировать соответственно. Если это collection/коллекция, он, вероятно, возвратит список потомков. Если это  документ, он возвратит mime-тип и content/содержимое. Можно добиться некоторого улучшения, если использовать машину перезаписи Apache. С точки зрения пользователя, лучше будет, если URL http://your.hostname/name_of_object возвратит объект.

Правило перезаписи довольно лёгкое:

RewriteRule ^/(.*) /usr/local/apache/htdocs/HyperWave/$1 [L]

Теперь каждый URL имеет отношение к объекту на Hyperwave-сервере. Это облегчает решение проблемы. Нет иного способа выполнить скрипт, например, для поиска, кроме 'Hyperwave'-скрипта. Это можно решить с помощью другого правила перезаписи, наподобие следующего:

RewriteRule ^/hw/(.*) /usr/local/apache/htdocs/hw/$1 [L]

Это зарезервирует директорию /usr/local/apache/htdocs/hw для дополнительных скриптов и других файлов. Просто убедитесь, что это правило вычисляется до вышеприведённого. Здесь есть один маленький недостаток: все Hyperwave-объекты, чьи имена начинаются с 'hw/', будут затемнены. Итак, убедитесь, что вы не используете таких имён. Если вам нужны дополнительные директории, например, для изображений, просто добавьте ещё правила или поместите их все в одну директорию. Наконец, не забудьте включить машину перезаписи:

XLV. Функции InterBase


Введение

InterBase является популярной БД фирмы Borland/Inprise. Больше информации о InterBase можно найти на http://www.interbase.com/. Да, кстати, InterBase уже вступил в движение свободно доступных ресурсов!

Примечание: полная поддержка InterBase 6 была введена в PHP 4.0.

Эта БД использует символ одинарной кавычки (') для escapi-рования (мнемонизации), поведение аналогично БД Sybase. Добавьте в ваш файл php.ini следующую директиву:

XL. Функции ICAP [не рекомендуется применять]


Введение

Примечание: Icap будет удалён в ближайшем будущем. Ни этот модуль, ни версии библиотеки icap больше не будут поддерживаться. Если вы хотите использовать календарные возможности PHP, используйте mcal.


Требования

Библиотека icap должна быть установлена, но больше не поддерживается.


Установка

Чтобы эти функции работали вы должны скомпилировать PHP с опцией --with-icap.


Конфигурация

Это расширение не определяет никаких директив конфигурации.


Типы ресурсов

Это расширение не определяет никакие типы ресурсов.


Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
icap_close - закрывает поток ICAP
icap_create_calendar - создаёт новый календарь
icap_delete_calendar - удаляет календарь
icap_delete_event - удаляет событие из ICAP-календаря
icap_fetch_event - извлекает событие из потока календаря
icap_list_alarms - возвращает список событий, которые содержат переключатель предупреждения для данной даты/времени
icap_list_events - возвращает список событий между двумя данными датами
icap_open - открывает ICAP-соединение
icap_rename_calendar - переименовывает календарь
icap_reopen - вновь открывает ICAP-поток для нового календаря
icap_snooze - "усыпляет" предупреждение
icap_store_event - сохраняет событие в ICAP-календаре

XLI. Функции iconv


Введение

Этот модуль содержит интерфейс для функций библиотеки iconv. Функция Iconv-библиотеки конвертирует файлы между различными наборами символов/кодировками. Поддерживаемый набор символов зависит от реализации iconv() для вашей системы. Заметьте, что функция iconv() на некоторых системах работает не так хорошо, как можно ожидать. В этом случае вы должны установить библиотеку libiconv.


Требования

Вы обязаны иметь функцию iconv() в стандартной C-библиотеке или библиотеку libiconv, установленную в вашей системе. Библиотека libiconv доступна с узла http://www.gnu.org/software/libiconv/


Установка

Чтобы иметь возможность использовать функции, определённые в этом модуле, вы обязаны скомпилировать PHP-интерпретатор с использованием строки конфигурации --with-iconv.


Конфигурация

Это расширение не определяет никаких директив конфигурации.


Типы ресурсов

Это расширение не определяет никакие типы ресурсов.


Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
iconv_get_encoding - получает текущую установку для конвертации кодировки символов
iconv_set_encoding - устанавливает текущую установку для конвертации кодировки символов
iconv - конвертирует строку в запрошенную кодировку
ob_iconv_handler - конвертирует кодировку символов как обработчик буфера вывода

XLIV. Функции Informix


Введение

Драйвер Informix для Informix (IDS) 7.x, SE 7.x, Universal Server (IUS) 9.x и IDS 2000 реализован в "ifx.ec" и "php3_ifx.h" в директории расширения informix. Поддержка IDS 7.x весьма основательна, с полной поддержкой столбцов BYTE и TEXT. Поддержка IUS 9.x частично завершена: введены новые типы данных, но поддержка SLOB и CLOB всё ещё в стадии разработки.


Требования

Замечания по конфигурации: вам необходима версия ESQL/C для компиляции драйвера Informix для РНР. ESQL/C версии с 7.2x должны работать нормально. ESQL/C является теперь частью Informix Client SDK.

Убедитесь, что переменная "INFORMIXDIR" установлена и что $INFORMIXDIR/bin имеется в вашей переменной окружения PATH, прежде чем запускать скрипт "configure".


Установка

Примечание: скрипт configure будет автоматически определять директории библиотек и include, если вы запустите configure --with_informix=yes. Вы можете переопределить это автоопределение, специфицировав "IFX_LIBDIR", "IFX_LIBS" и "IFX_INCDIR" в окружении. Скрипт configure также попытается определить версию вашего сервера Informix. Он установит переменную условной компиляции "HAVE_IFX_IUS", если ваша версия Informix >= 9.00.


Конфигурация

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

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

Некоторые замечания об использовании BLOB'ов (столбцы TEXT и BYTE): BLOB'ы нормально адресуются BLOB-идентификаторами. Запросы выборки возвращают "blob id" для каждого столбца BYTE и TEXT. Вы можете получить содержимое с помощью "string_var = ifx_get_blob($blob_id);", если вы выбрали получение BLOB'ов в памяти (с помощью: "ifx_blobinfile(0);"). Если вы предпочитаете получать содержимое BLOB-столбцов в файле, используйте "ifx_blobinfile(1);", а "ifx_get_blob($blob_id);" даст вам filename. Используйте нормальный I/O файлов для получения содержимого blob.

Для запросов insert/update вы обязаны создать эти "blob id'ы" самостоятельно с помощью " ifx_create_blob();". Затем подключите blob id'ы в массив и заместите blob-столбцы знаком вопроса (?) в строке запроса. Для update/insert вы ответственны за установку blob-содержимого с помощью ifx_update_blob().

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

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

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

runtime-функции :

ifx_textasvarchar(0) : использовать blob id'ы для select-запросов со столбцами TEXT

ifx_byteasvarchar(0) : использовать blob id'ы для select-запросов со столбцами BYTE

ifx_textasvarchar(1) : возвращать столбцы TEXT, как если бы они были столбцами VARCHAR, чтобы вам не нужно было использовать blob id'ы дляselect-запросов

ifx_byteasvarchar(1) : возвращать столбцы BYTE, как если бы они были столбцами VARCHAR, чтобы вам не нужно было использовать blob id'ы для select-запросов

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

runtime-функция :

ifx_blobinfile_mode(0) : возвращать столбцы BYTE в памяти, blob id позволяет получать содержимое

ifx_blobinfile_mode(1) : возвращать столбцы BYTE в файле, blob id позволяет получать имя файла

Если вы устанавливаете для ifx_text/byteasvarchar значение 1, вы можете использовать столбцы TEXT и BYTE в select-запросах, как нормальные (но всё же long) поля VARCHAR. Поскольку все строки "подсчитаны" в PHP, он остаётся "binary safe". Вы обязаны обработать это корректно. Возвращаемые данные могут содержать всё что угодно, вы отвечаете за содержимое.

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

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

Автоматическая доводка "char"-данных (SQLCHAR и SQLNCHAR): это можно установить переменной окружения

ifx.charasvarchar : если установлено 1, ведомые пробелы автоматически удаляются, давая вам некоторое подобие "отсечения/chopping".

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


Типы ресурсов


Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
ifx_affected_rows - получает количество рядов, задействованных в запросе
ifx_blobinfile_mode - устанавливает blob-режим по умолчанию для всех select-запросов
ifx_byteasvarchar - устанавливает byte-режим по умолчанию
ifx_close - закрывает соединение Informix
ifx_connect - открывает серверное соединение Informix
ifx_copy_blob - дублирует данный blob-объект
ifx_create_blob - создаёт blob-объект
ifx_create_char - создаёт char-объект
ifx_do - выполняет ранее подготовленный SQL-оператор
ifx_error - возвращает код ошибки последнего вызова Informix
ifx_errormsg - возвращает сообщение об ошибке последнего вызова Informix
ifx_fetch_row - получает ряд как перечислимый массив
ifx_fieldproperties - выдаёт список свойств SQL-полей
ifx_fieldtypes - выдаёт список Informix SQL-полей
ifx_free_blob - удаляет blob-объект
ifx_free_char - удаляет char-объект
ifx_free_result - освобождает ресурсы для запроса
ifx_get_blob - возвращает содержимое blob-объекта
ifx_get_char - возвращает содержимое char-объекта
ifx_getsqlca - получает содержимое sqlca.sqlerrd[0..5] после запроса
ifx_htmltbl_result - форматирует все ряды запроса в виде HTML-таблицы
ifx_nullformat - устанавливает return-значение по умолчанию при извлечении ряда
ifx_num_fields - возвращает количество столбцов в запросе
ifx_num_rows - подсчитывает ряды, уже извлечённые из запроса
ifx_pconnect - открывает постоянное соединение Informix
ifx_prepare - готовит SQL-оператор для выполнения
ifx_query - отправляет Informix query
ifx_textasvarchar - устанавливает текстовый режим по умолчанию
ifx_update_blob - обновляет содержимое blob-объекта
ifx_update_char - обновляет содержимое char-объекта
ifxus_close_slob - удаляет slob-объект
ifxus_create_slob - создаёт slob-объект и открывает его
ifxus_free_slob - удаляет slob-объект
ifxus_open_slob - открывает slob-объект
ifxus_read_slob - читает n байт slob-объекта
ifxus_seek_slob - устанавливает текущую позицию файла или поиска
ifxus_tell_slob - возвращает текущую позицию файла или поиска
ifxus_write_slob - записывает строку в slob-объект

XLII. Функции изображений


Введение

Вы можете использовать функции работы с изображениями в PHP для получения размера изображений форматов JPEG, GIF , PNG , SWF , TIFF и JPEG2000.


Требования

Если у вас есть библиотека GD (доступна с http://www.boutell.com/gd/), вы также сможете создавать изображения и манипулировать ими.

Формат изображений, с которыми вы можете работать, зависит от установленной у вас версии GD и любых других GD-библиотек, которые могут понадобиться для доступа к изображениям этих форматов. Версии GD старше gd-1.6 поддерживают изображения gif и не поддерживают png, а версии новее gd-1.6 поддерживают png, но не gif.

Если вы скомпилировали PHP с опцией --enable-exif, вы можете работать с информацией, хранимой в header'ах изображений JPEG и TIFF . Эти функции не требуют библиотеки GD .


Установка

Чтобы читать и записывать изображения в формате jpeg, вам нужно будет получить и установить jpeg-6b (находится на ftp://ftp.uu.net/graphics/jpeg/), а затем перекомпилировать GD на использование jpeg-6b. Вы должны будете также скомпилировать PHP с опцией --with-jpeg-dir=/path/to/jpeg-6b.

Для добавления поддержки шрифтов Type 1, вы можете установить t1lib (находится на ftp://sunsite.unc.edu/pub/Linux/libs/graphics/), а затем добавить --with-t1lib[=dir].


Конфигурация

Это расширение не определяет никаких директив конфигурации.


Типы ресурсов

Это расширение не определяет никакие типы ресурсов.


Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

IMG_GIF (integer)
IMG_JPG (integer)
IMG_JPEG (integer)
IMG_PNG (integer)
IMG_WBMP (integer)
IMG_XPM (integer)
IMG_COLOR_TILED (integer)
IMG_COLOR_STYLED (integer)
IMG_COLOR_BRUSHED (integer)
IMG_COLOR_STYLEDBRUSHED (integer)
IMG_COLOR_TRANSPARENT (integer)
IMG_ARC_ROUNDED (integer)
IMG_ARC_PIE (integer)
IMG_ARC_CHORD (integer)
IMG_ARC_NOFILL (integer)
IMG_ARC_EDGED (integer)
 
Содержание
exif_imagetype - определяет тип изображения
exif_read_data — читает шапки EXIF в JPEG или TIFF
exif_thumbnail - запрашивает внедрённую уменьшенную версию/thumbnail изображения TIFF или JPEG
getimagesize - получает размер изображения
image2wbmp - выводит изображение в браузер или файл
imagealphablending - устанавливает режим смешения/blending изображения
imagearc - прорисовывает дугу
imagechar - прорисовывает символ горизонтально
imagecharup - прорисовывает символ вертикально
imagecolorallocate - выделяет цвет для изображения
imagecolorat - получает индекс цвета пиксела
imagecolorclosest - получает индекс цвета, ближайшего к специфицированному цвету
imagecolorclosestalpha - получает индекс цвета, ближайшего к специфицированному цвету + alpha
imagecolorclosesthwb - получает индекс цвета, оттенок, белизну и черноту, ближайшие к данному цвету
imagecolordeallocate - снимает выделение/размещение цвета для изображения
imagecolorexact - получает индекс специфицированного цвета
imagecolorexactalpha - получает индекс специфицированного цвета + alpha
imagecolorresolve - получает индекс специфицированного цвета или ближайшей возможной альтернативы
imagecolorresolvealpha - получает индекс специфицированного цвета + alpha или ближайшей возможной альтернативы
imagecolorset - устанавливает цвет для специфицированного индекса палитры
imagecolorsforindex - получает цвет индекса
imagecolorstotal - определяет количество цветов в палитре изображения
imagecolortransparent - определяет цвет как прозрачный/transparent
imagecopy - копирует часть изображения
imagecopymerge - копирует и объединяет часть изображения
imagecopymergegray - копирует и объединяет часть изображения с серой шкалой
imagecopyresampled - копирует часть изображения и изменяет его размер путём пересэмплирования
imagecopyresized - копирует часть изображения и изменяет его размер
imagecreate - создаёт новую палитру на основе изображения
imagecreatefromgd2 - создаёт новое изображение из GD2-файла или URL
imagecreatefromgd2part - создаёт новое изображение из данной части GD2-файла или URL
imagecreatefromgd - создаёт новое изображение из GD-файла или URL
imagecreatefromgif - создаёт новое изображение из файла или URL
imagecreatefromjpeg - создаёт новое изображение из файла или URL
imagecreatefrompng - создаёт новое изображение из файла или URL
imagecreatefromstring - создаёт новое изображение из потока изображения в строке
imagecreatefromwbmp - создаёт новое изображение из файла или URL
imagecreatefromxbm - создаёт новое изображение из файла или URL
imagecreatefromxpm - создаёт новое изображение из файла или URL
imagecreatetruecolor - создаёт новое изображение true color
imagedashedline - прорисовывает пунктирную линию
imagedestroy - разрушает изображение
imageellipse - прорисовывает эллипс
imagefill - заполняет заливкой
imagefilledarc - прорисовывает часть эллипса и заполняет её
imagefilledellipse - прорисовывает заполненный эллипс
imagefilledpolygon - прорисовывает заполненный многоугольник
imagefilledrectangle - прорисовывает заполненный прямоугольник
imagefilltoborder - заполняет заливкой специфицированного цвета
imagefontheight - получает высоту шрифта
imagefontwidth - получает ширину шрифта
imageftbbox - задаёт ограничивающий бокс текста, используя шрифты через freetype2
imagefttext - записывает текст на изображение, используя шрифты с FreeType 2
imagegammacorrect - применяет коррекцию гаммы к GD-изображению
imagegd2 - выводит GD2-изображение в браузер или файл
imagegd - выводит GD-изображение в браузер или файл
imagegif - выводит изображение в браузер или файл
imageinterlace - включает или отключает interlace/вывод изображения полосами
imagejpeg - выводит изображение в браузер или файл
imageline - прорисовывает линию
imageloadfont - загружает новый шрифт
imagepalettecopy - копирует палитру из одного изображения в другое
imagepng - выводит PNG-изображение в браузер или файл
imagepolygon - прорисовывает многоугольник
imagepsbbox - задаёт ограничивающий бокс прямоугольника текста, используя шрифты PostScript Type1
imagepscopyfont - делает копию уже загруженного шрифта для последующей модификации
imagepsencodefont - изменяет вектор кодировки символов шрифта
imagepsextendfont - расширяет или сжимает шрифт
imagepsfreefont - освобождает память, использованную шрифтом PostScript Type 1
imagepsloadfont - загружает шрифт PostScript Type 1 из файла
imagepsslantfont - наклоняет шрифт
imagepstext - прорисовывает текстовую строку поверх изображения с использованием шрифтов PostScript Type1
imagerectangle - прорисовывает прямоугольник
imagesetbrush - устанавливает изображение кисти для прорисовки линии
imagesetpixel - устанавливает одиночный пиксел
imagesettyle - устанавливает стиль прорисовки линии
imagesetthickness - устанавливает толщину прорисовки линии
imagesettile - устанавливает изображение, размножаемое для заполнения/tile
imagestring - прорисовывает строку горизонтально
imagestringup - прорисовывает строку вертикально
imagesx - получает ширину изображения
imagesy - получает высоту изображения
imagetruecolortopalette - конвертирует изображение true color в палитровое/palette изображение
imagettfbbox - задаёт ограничивающий бокс текста, используя шрифты TrueType
imagettftext - записывает текст на изображение, используя шрифты TrueType
imagetypes - возвращает типы изображений, поддерживаемые этим построением PHP
imagewbmp - выводит изображение в браузер или файл
iptcembed - внедряет двоичные IPTC-данные в JPEG-изображение
jpeg2wbmp - конвертирует файл JPEG-изображения в файл WBMP-изображения
png2wbmp - конвертирует файл PNG-изображения в файл WBMP-изображения
read_exif_data - читает header-информацию, хранимую в изображениях TIFF и JPEG

XLIII. Функции IMAP, POP3 и NNTP


Введение

Эти функции не ограничиваются протоколом IMAP , как можно было бы понять из их названия. Основная клиентская С-библиотека также поддерживает методы доступа NNTP, POP3 и локального mailbox.


Требования

Это расширение требует наличия библиотеки c-client. Скачайте последнюю версию с ftp://ftp.cac.washington.edu/imap/ и скомпилируйте её.


Установка

Чтобы эти функции работали, вы должны скомпилировать PHP с опцией --with-imap.

Затем скопируйте c-client/c-client.a в /usr/local/lib/libc-client.a или какую-нибудь другую директорию в пути link и скопируйте c-client/c-client.h, c-client/imap4r1.h, c-client/rfc-882.h, c-client/mail.h и c-client/linkage.h в /usr/local/include или какую-нибудь другую директорию в пути include.

Примечание: в зависимости от того как c-client была сконфигурирована, вам также может понадобиться добавить --with-imap-ssl=/path/to/openssl/ и/или --with-kerberos в строки конфигурации PHP.


Конфигурация

Это расширение не определяет никаких директив конфигурации.


Типы ресурсов


Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

NIL (integer)
OP_DEBUG (integer)
OP_READONLY (integer)
OP_ANONYMOUS (integer)
OP_SHORTCACHE (integer)
OP_SILENT (integer)
OP_PROTOTYPE (integer)
OP_HALFOPEN (integer)
OP_EXPUNGE (integer)
OP_SECURE (integer)
CL_EXPUNGE (integer)
FT_UID (integer)
FT_PEEK (integer)
FT_NOT (integer)
FT_INTERNAL (integer)
FT_PREFETCHTEXT (integer)
ST_UID (integer)
ST_SILENT (integer)
ST_SET (integer)
CP_UID (integer)
CP_MOVE (integer)
SE_UID (integer)
SE_FREE (integer)
SE_NOPREFETCH (integer)
SO_FREE (integer)
SO_NOSERVER (integer)
SA_MESSAGES (integer)
SA_RECENT (integer)
SA_UNSEEN (integer)
SA_UIDNEXT (integer)
SA_UIDVALIDITY (integer)
SA_ALL (integer)
LATT_NOINFERIORS (integer)
LATT_NOSELECT (integer)
LATT_MARKED (integer)
LATT_UNMARKED (integer)
SORTDATE (integer)
SORTARRIVAL (integer)
SORTFROM (integer)
SORTSUBJECT (integer)
SORTTO (integer)
SORTCC (integer)
SORTSIZE (integer)
TYPETEXT (integer)
TYPEMULTIPART (integer)
TYPEMESSAGE (integer)
TYPEAPPLICATION (integer)
TYPEAUDIO (integer)
TYPEIMAGE (integer)
TYPEVIDEO (integer)
TYPEOTHER (integer)
ENC7BIT (integer)
ENC8BIT (integer)
ENCBINARY (integer)
ENCBASE64 (integer)
ENCQUOTEDPRINTABLE (integer)
ENCOTHER (integer)

См. также

Данный документ не может привести всю информацию об этих функциях. Дополнительно см. информацию в документации к исходнику библиотеки c-client (docs/internal.txt) и следующие RFC-документы:

RFC2821: Simple Mail Transfer Protocol (SMTP).

RFC2822: Стандарт для текстовых сообщений интернет ARPA.

RFC2060: Internet Message Access Protocol (IMAP) Версии 4rev1.

RFC1939: Post Office Protocol Версии 3 (POP3).

RFC977: Network News Transfer Protocol (NNTP).

RFC2076: Общие Шапки/Headers Internet-Сообщений.

RFC2045, RFC2046, RFC2047, RFC2048 & RFC2049: MultipurposeInternet Mail Extensions (MIME).

Детальный обзор также имеется в книге Programming Internet Email, автор David Wood, и ManagingIMAP, авторы Dianna Mullet & Kevin Mullet.

Предупреждение! Могут возникнуть проблемы зависания и старта PHP при загрузке этого расширения вместе с расширением recode. См. также расширение recode.
Содержание
imap_8bit - конвертирует 8-битную строку в закавыченную печатаемую строку
imap_alerts - Эта функция возвращает все сообщения-предупреждения IMAP (если имеются), которые возникли в процессе запроса этой страницы или после восстановления стэка предупреждений
imap_append - присоединяет строковое сообщение в специфицированный mailbox
imap_base64 - декодирует BASE64-кодированный текст
imap_binary - конвертирует 8-битную строку в base64-строку
imap_body - читает тело сообщения
imap_bodystruct - читает структуру специфицированного раздела тела специфического сообщения
imap_check - проверяет текущий mailbox
imap_clearflag_full - очищает флаги в сообщениях
imap_close - закрывает поток IMAP
imap_createmailbox - создаёт новый mailbox/почтовый ящик
imap_delete - помечает сообщение для удаления из текущего mailbox
imap_deletemailbox - удаляет mailbox
imap_errors - эта функция возвращает все ошибки IMAP (если имеются), которые возникли в процессе запроса этой страницы или после восстановления стэка ошибок
imap_expunge - удаляет все сообщения, помеченные для удаления
imap_fetch_overview - читает обзор информации в шапках/headers данного сообщения
imap_fetchbody - извлекает определённый раздел тела сообщения
imap_fetchheader - возвращает header сообщения
imap_fetchstructure - читает структуру определённого сообщения
imap_get_quota - запрашивает установки уровня квоты и статистику использования mailbox
imap_getmailboxes - читает список mailbox'ов, возвращая детальную информацию о каждом
imap_getsubscribed - выдаёт список всех подписанных mailbox'ов
imap_header - читает header сообщения
imap_headerinfo - читает header сообщения
imap_headers — возвращает header'ы всех сообщений в mailbox
imap_last_error - эта функция возвращает последнюю ошибку IMAP (если имеется), которая возникла в процессе запроса этой страницы
imap_listmailbox - читает список mailbox'ов
imap_listsubscribed - выдаёт список всех подписанных mailbox'ов
imap_mail_compose - создаёт MIME-сообщение на основе данных разделов envelope и body
imap_mail_copy - копирует специфицированное сообщение в mailbox
imap_mail_move - перемещает специфицированное сообщение в mailbox
imap_mail - отправляет email-сообщение
imap_mailboxmsginfo - получает информацию о текущем mailbox'е
imap_mime_header_decode - декодирует элементы MIME-header'а
imap_msgno - эта функция возвращает количество последовательностей сообщений для данного UID
imap_num_msg - задаёт количество сообщений в текущем mailbox
imap_num_recent - задаёт количество оставшихся сообщений в текущем mailbox
imap_open - открывает поток IMAP в mailbox
imap_ping - проверяет, активен ли поток IMAP
imap_popen - открывает постоянный поток IMAP в mailbox
imap_qprint - конвертирует закавыченную печатаемую строку в 8-битную строку
imap_renamemailbox - переименовывает старый mailbox в новый mailbox
imap_reopen - повторно открывает поток IMAP в новый mailbox
imap_rfc822_parse_adrlist - разбирает строку с адресом
imap_rfc822_parse_headers - разбирает mail header'ы из строки
imap_rfc822_write_address - Возвращает соответственно сформатированный email адрес с данными mailbox, host и personal info.
imap_scanmailbox - читает список mailbox'ов, берёт строку для поиска в тексте mailbox'а
imap_search - эта функция возвращает массив сообщений, совпадающих с данными критериями поиска
imap_set_quota - устанавливает квоту для данного mailbox'а
imap_setacl - устанавливает ACL для данного mailbox'а
imap_setflag_full - устанавливает флаги на сообщениях
imap_sort — сортирует массив header'ов сообщений
imap_status - эта функция возвращает статус-информацию о mailbox'е, отличном от текущего
imap_subscribe - подписывает на mailbox
imap_thread - возвращает дерево, распределённое REFERENCES по потокам
imap_uid - эта функция возвращает UID для данного номера последовательности сообщений
imap_undelete - снимает маркировку с сообщения, помеченного для удаления
imap_unsubscribe - отменяет подписку на mailbox
imap_utf7_decode - декодирует модифицированную UTF-7-кодированную строку
imap_utf7_encode — конвертирует 8-битные данные в модифицированный UTF-7-текст
imap_utf8 - конвертирует текст в  UTF8

XLVI. Функции Ingres II

Предупреждение!Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Эти функции дают доступ к серверам баз данных Ingres II.

Чтобы иметь возможность работать с этими функциями, вы обязаны скомпилировать РНР с поддержкой Ingres с помощью опции --with-ingres. Вам необходима библиотека Open API и включённые/include header-файлы для работы с Ingres II. Если переменная окружения II_SYSTEM не установлена корректно, вам может понадобиться использовать --with-ingres=DIR для специфицирования вашей директории установки Ingres.

При использовании этого расширения с Apache, если Apache не стартует и выдаёт ошибку "PHP Fatal error: Unable to start ingres_ii module in Unknown on line 0", то убедитесь, что переменная окружения II_SYSTEM установлена корректно. Добавление "export II_SYSTEM="/home/ingres/II" в стартовый скрипт Apache, сразу перед запуском httpd, должно помочь.

Примечание: если вы уже использовали PHP для доступа к другим серверам БД, обратите внимание, что Ingres не допускает конкурирующих запросов и/или транзакций по одному соединению, поэтому вы не найдёте в этом расширении дескрипторов результата или транзакции. Результат запроса/query обязан рассматриваться до отправления другого запроса, а транзакция обязана подтверждаться либо откатываться до открытия другой транзакции (что делается автоматически при отправке первого запроса).

Содержание
ingres_autocommit - включает и выключает autocommit
ingres_close - закрывает соединение с БД Ingres II
ingres_commit - подтверждает транзакцию
ingres_connect - открывает соединение с БД Ingres II
ingres_fetch_array - извлекает ряд результата в массив
ingres_fetch_object - извлекает ряд результата в объект
ingres_fetch_row - извлекает ряд результата в перечислимый массив
ingres_field_length - получает длину поля
ingres_field_name - получает имя поля в результате выполнения запроса
ingres_field_nullable - проверяет, является ли поле обнуляемым
ingres_field_precision - получает точность поля
ingres_field_scale - получает масштаб поля
ingres_field_type - получает тип поля в результате выполнения запроса
ingres_num_fields - получает количество полей, возвращённых последним запросом
ingres_num_rows - получает количество рядов, задействованных в или возвращённых последним запросом
ingres_pconnect - открывает постоянное соединение с БД Ingres II
ingres_query - отправляет SQL query на Ingres II
ingres_rollback - откатывает транзакцию

XLVII. Функции IRC-шлюза


Что такое ircg?

С помощью ircg вы можете создавать мощные, быстрые и масштабируемые web-чаты в сочетании с выделенными или публичными IRC-серверами.


Платформы

IRCG работает под:

AIX

FreeBSD

HP-UX

Irix

Linux

Solaris

Tru64


Требования

Для установки и использования IRCG вам необходимо следующее программное обеспечение:

    IRCG-Library от Sascha Schumann

    SGI Static Threads Library

    thttpd web сервер


Установка

Детальные инструкции по установке находятся здесь.

Содержание
ircg_channel_mode - устанавливает флаги режима каналов для пользователя
ircg_disconnect - закрывает соединение с сервером
ircg_fetch_error_msg - возвращает ошибку от предыдущей операции ircg
ircg_get_username - получает username для соединения
ircg_html_encode - кодирует HTML, сохраняя вывод
ircg_ignore_add - добавляет пользователя в ваш список ignore на сервере
ircg_ignore_del - удаляет пользователя из вашего списка ignore на сервере
ircg_is_conn_alive - проверяет статус соединения
ircg_join - входит в канал на подсоединённом сервере
ircg_kick - выбрасывает пользователя из канала на сервере
ircg_lookup_format_messages - выбирает набор строк форматирования для отображения IRC-собщений
ircg_msg - отправляет сообщение в канал или пользователю на сервере
ircg_nick - изменяет псевдоним на сервере
ircg_nickname_escape - кодирует специальные символы в псевдониме для совмещения с IRC
ircg_nickname_unescape - декодирует кодированный псевдоним
ircg_notice - отправляет уведомление пользователю на сервере
ircg_part - оставляет канал на сервере
ircg_pconnect - соединяется с IRC-сервером
ircg_register_format_messages - регистрирует набор строк форматирования для отображения IRC-ссобщений
ircg_set_current - устанавливает текущее соединение для вывода
ircg_set_file - устанавливает logfile для соединения
ircg_set_on_die - устанавливает hostaction для выполнения при завале соединения
ircg_topic - устанавливает предмет/topic для канала на сервере
ircg_whois - запрашивает пользовательскую информацию для псевдонима на сервере

XLVIII. Java

Есть два способа связать PHP и Java: вы можете либо интегрировать PHP в среду Java Servlet, что является более стабильным и эффективным решением, либо интегрировать поддержку Java в PHP. Первый предоставляется SAPI-модулем, который является интерфейсом с Servlet-сервером, второй - РНР-расширением Java.

PHP 4 ext/java предоставляет простые и эффективные средства для создания и вызова методов Java-объектов из PHP. JVM создаётся с использованием JNI, и всё запускается in-process. Встроенные инструкции для ext/java можно найти в файле php4/ext/java/README.

XLIX. Функции LDAP


Введение в LDAP

LDAP это Lightweight Directory Access Protocol - протокол, используемый для доступа к "Directory Servers". Directory это особый вид базы данных, которая содержит информацию как древовидную структуру.

Концепция аналогична структуре директорий жёсткого диска, но в данном контексте root/корневая директория это "The world/Земной шар", а первый уровень поддиректорий это "countries/страны". Ещё ниже идут уровни структуры директорий, содержащие вхождения для companies/компаний, organisations/организаций или мест, а ещё ниже находятся вхождения директорий для people/людей и, возможно, оборудования или документов.

Чтобы обратиться к файлу в поддиректории на жёстком диске, вы вводите что-нибудь вроде

/usr/local/myapp/docs
 

Слэш отделяет каждое подразделение ссылки, а последовательность читается слева направо.

Эквивалентом для полной квалифицированной ссылки на файл в LDAP является "distinguished name/различительное имя", называемое просто "dn". Примером dn может быть:


    cn=John Smith,ou=Accounts,o=My Company,c=US
 

Запятая работает как слэш, а последовательность читается справа налево. Вы можете прочитать это dn как ...


    country = US
    organization = My Company
    organizationalUnit = Accounts
    commonName = John Smith
 

Точно так же, поскольку нет твёрдых правил организации структуры директорий на жёстком диске, directory server manager (менеждер сервера директорий) может настроить любую структуру, необходимую для осуществления поставленных задач. Однако есть некоторые соглашения, которые при этом используются: вы не можете записать код для доступа к серверу директорий, если не знаете его структуру, хотя можете использовать БД без знания того, что доступно.


Полный пример кода

Запрашиваем информацию для всех вхождений, где фамилия начинается с "S", с сервера директорий и отображаем их с именем и email-адресом.

L. Функции почты

Функция mail() даёт возможность отправлять почту

 
Директивы конфигурации Mail
SMTP string

Только под Windws: DNS name или IP-адрес SMTP-сервера, который PHP должен использовать для отправки почты функцией mail().

SMTP int

Только под Windws: Номер порта для соединения с сервером, специфицированным установкой SMTP, при отправке почты функцией mail(); по умолчанию 25. Доступен, только начиная сPHP 4.3.0.

sendmail_from string

Который "From:"-почтовый адрес должен использоваться в почте, отправляемой из PHP под Windows.

sendmail_path string

Где можно найти программу sendmail; обычно /usr/sbin/sendmail или /usr/lib/sendmail configure выполняет попытку локализовать её для вас и установить по умолчанию, но при неудаче вы можете установить её здесь.

Системы, не использующие sendmail, должны установить эту директиву в sendmail wrapper/replacement, предлагаемые их почтовыми системами, если они имеются. Например, пользователи Qmail могут нормально установить её /var/qmail/bin/sendmail или /var/qmail/bin/qmail-inject.

qmail-inject не требует никаких опций для корректной обработки почты.

Содержание
ezmlm_hash - вычисляет хэш-значение, необходимое для EZMLM
mail - отправляет почту

LI. Функции mailparse

Предупреждение!Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.
Содержание
mailparse_determine_best_xfer_encoding - определяет наилучший способ кодирования содержимого, прочитанного из файлового указателя fp, где обязана иметься возможность для поиска
mailparse_msg_create — возвращает дескриптор, который может использоваться для разбора сообщения
mailparse_msg_extract_part_file - извлекает/декодирует раздел сообщения, декодируя кодировку трансфера
mailparse_msg_extract_part - извлекает/декодирует раздел сообщения. Если callbackfunc не специфицирована, содержимое будет отправлено в "stdout"
mailparse_msg_free - освобождает дескриптор, выделенный mailparse_msg_crea
mailparse_msg_get_part_data — возвращает ассоциативный массив информации о сообщении
mailparse_msg_get_part — возвращает дескриптор данного раздела в mimemessage
mailparse_msg_get_structure — возвращает массив имён mime-разделов в предоставленном сообщении
mailparse_msg_parse_file - разбирает файл и возвращает ресурс, представляющий эту структуру
mailparse_msg_parse - инкрементно разбирает данные в буфере
mailparse_rfc822_parse_addresses - разбирает адреса и возвращает хэш, содержащий эти данные
mailparse_stream_encode - направляет в поток данные из исходного указателя файла, применяя кодировку и и записывая в destfp
mailparse_uudecode_all - сканирует данные из fp и извлекает каждый внедрённый uuencoded файл. Возвращает массив со списком filename-информации

LII. Математические функции


Введение

Эти math-функции обрабатывают только значения в диапазоне типов от integer до float на вашем компьютере (в данный момент это соответствует C-типам от long до double). Если вам нужно работать с б́ольшими числами, ознакомьтесь с math-функциями произвольной точности.

Предопределённые константы

Следующие значения определены как константы в PHP расширением math:

Таблица 1. Math-константы
КонстантаЗначение ОписаниеM_PI3.14159265358979323846Pi M_E2.7182818284590452354eM_LOG2E1.4426950408889634074 log_2 eM_LOG10E0.43429448190325182765log_10 eM_LN2 0.69314718055994530942log_e 2M_LN102.30258509299404568402 log_e 10M_PI_21.57079632679489661923pi/2M_PI_4 0.78539816339744830962pi/4M_1_PI0.31830988618379067154 1/piM_2_PI0.636619772367581343082/piM_SQRTPI 1.77245385090551602729sqrt(pi) [4.0.2]M_2_SQRTPI1.12837916709551257390 2/sqrt(pi)M_SQRT21.41421356237309504880sqrt(2) M_SQRT31.73205080756887729352sqrt(3) [4.0.2]M_SQRT1_2 0.707106781186547524401/sqrt(2)M_LNPI1.14472988584940017414 log_e(pi) [4.0.2]M_EULER0.57721566490153286061константа Эйлера [4.0.2]

Только M_PI доступна в версиях до PHP 4.0.0. Все другие константы доступны, начиная с PHP 4.0.0. Константы, помеченные [4.0.2] были введены в PHP 4.0.2.

Содержание
abs - абсолютное значение
acos - арккосинус
acosh - инверсный гиперболический косинус
asin - арксинус
asinh - инверсный гиперболический синус
atan2 - арктангенс двух переменных
atan - арктангенс
atanh - инверсный гиперболический тангенс
base_convert - конвертирует число между произвольными базами
bindec - двоичное в 10-ричное
ceil - округление дробей в сторону увеличения
cos - косинус
cosh - гиперболический косинус
decbin - десятеричное в двоичное
dechex - 10-ричное в 16-ричное
decoct - 10-ричное в 8-ричное
deg2rad - конвертирует число в градусах в эквивалент в радианах
exp - e в степени ...
expm1 - возвращает exp(число) - 1, вычисляемое способом, который обеспечивает точность, даже если значение близко к нулю
floor - округляет дробь в сторону уменьшения
getrandmax - показывает наибольшее возможное случайное значение
hexdec - 16-ричное в 10-ричное
hypot - возвращает sqrt( num1*num1 + num2*num2)
is_finite -
is_infinite -
is_nan -
lcg_value - комбинированный линеарный конгруэнтный генератор
log10 - логарифм с базой 10
log1p - возвращает log(1 + число), вычисляемое способом, который обеспечивает точность, даже если значение близко к нулю
log - натуральный логарифм
max - находит наибольшее значение
min - находит наименьшее значение
mt_getrandmax - показывает наибольшее возможное случайное значение
mt_rand - генерирует наилучшее случайное значение
mt_srand - запускает генератор наилучшего случайного числа
number_format - форматирует число с группировкой по тысячам
octdec - 8-ричное в 10-ричное
pi - значение pi
pow - экспоненциальное выражение
rad2deg - конвертирует число в радианах в эквивалент в градусах
rand - генерирует случайное число
round - округляет число с плавающей точкой/float
sin - синус
sinh - гиперболический синус
sqrt - квадратный корень
srand - запускает генератор наилучшего случайного числа
tan - тангенс
tanh - гиперболический тангенс

LIII. Функции мультибайтных строк


Введение

Во многих языках символы могут выражаться одним байтом. Многобайтные коды символов используются для выражения символов многих других языков.
mbstring разработано для работы с японскими символами. Однако многие функции mbstring могут работать с иными кодировками, не только с японской.

Многобайтная кодировка символов представляет один символ несколькими последовательными байтами. Некоторые кодировки имеют shift(escape)-последовательности для начала/окончания строк многобайтных символов. Следовательно, многобайтная строка может быть разрушена при разделении и/или обсчёте, если не использовать метод надёжного кодирования многобайтных символов. Данный модуль предоставляет функции сохранения много байтных символов и другие вспомогательные функции, такие как функции конвертации.

Поскольку PHP в основе своей разработан для ISO-8859-1, некоторые многобайтные кодировки плохо работают в PHP. Следовательно, важно устанавливать mbstring.internal_encoding для кодировки, работающей с PHP.

Требования Кодировки Символов PHP4

побайтное кодирование

однобайтные символы находятся в диапазоне 00h-7fh, что совместимо с ASCII

многобайтное кодирование - вне диапазона 00h-7fh

Вот примеры внутренней кодировки символов, которые работают и НЕ работают с PHP.

LIV. Функции MCAL

MCAL это Modular Calendar Access Library.

Libmcal это библиотека C для доступа к календарям. Она написана как модульная, с подключаемыми драйверами. MCAL это календарный эквивалент IMAP-модуля для mailboxes/почтовых ящиков.

При поддержке mcal, календарный поток может быть открыт почти так же, как mailbox-поток с поддержкой IMAP. Календари могут быть локальными файлами, удалёнными ICAP-серверами или другими форматами, которые поддерживаются библиотекой mcal.

Календарные события могут быть направлены в пул, запрошены или сохранены. Имеется также поддержка календарных тригеров (предупреждений) и повторяющихся событий.

С помощью libmcal можно получать доступ к календарным серверам без необходимости использования локального программирования или специфической БД.

Для того чтобы эти функции работали, вы должны скомпилировать PHP с опцией --with-mcal. Это требует установленной библиотеки mcal. Скачайте последнюю версию с http://mcal.chek.com/ и скомпилируйте и установите её.

Следующие константы определены при использовании модуля MCAL. Для дней недели:

MCAL_SUNDAY

MCAL_MONDAY

MCAL_TUESDAY

MCAL_WEDNESDAY

MCAL_THURSDAY

MCAL_FRIDAY

MCAL_SATURDAY

Для повторений:

MCAL_RECUR_NONE

MCAL_RECUR_DAILY

MCAL_RECUR_WEEKLY

MCAL_RECUR_MONTHLY_MDAY

MCAL_RECUR_MONTHLY_WDAY

MCAL_RECUR_YEARLY

Для месяцев:

MCAL_JANUARY

MCAL_FEBRUARY

MCAL_MARCH

MCAL_APRIL

MCAL_MAY

MCAL_JUNE

MCAL_JULY

MCAL_AUGUST

MCAL_SEPTEMBER

MCAL_OCTOBER

MCAL_NOVEMBER

MCAL_DECEMBER

Большинство функций используют внутреннюю структуру событий, которая уникальна для каждого потока. Это избавляет от необходимости передавать большие объекты между функциями. Имеются удобные функции для настройки, инициализации и запрашивания значений структуры событий.

Содержание
mcal_append_event - сохраняет новое событие в MCAL-календаре
mcal_close - закрывает поток MCAL
mcal_create_calendar - создаёт новый MCAL-календарь
mcal_date_compare - сравнивает две даты
mcal_date_valid — возвращает TRUE, если данный год, месяц, день является верной датой
mcal_day_of_week — возвращает день недели для данной даты
mcal_day_of_year — возвращает день года для данной даты
mcal_days_in_month — возвращает количество дней в данном месяце
mcal_delete_calendar - удаляет MCAL-календарь
mcal_delete_event - удаляет событие из MCAL-календаря
mcal_event_add_attribute - добавляет атрибут и значение в структуру глобальных событий потока
mcal_event_init - инициализирует структуру глобальных событий потока
mcal_event_set_alarm - устанавливает напоминание/alarm структуры глобальных событий потока
mcal_event_set_category - устанавливает категорию структуры глобальных событий потока
mcal_event_set_class - устанавливает класс структуры глобальных событий потока
mcal_event_set_description - устанавливает описание структуры глобальных событий потока
mcal_event_set_end - устанавливает конечную дату и время структуры глобальных событий потока
mcal_event_set_recur_daily - устанавливает повторение структуры глобальных событий потока
mcal_event_set_recur_monthly_mday - устанавливает повторение структуры глобальных событий потока
mcal_event_set_recur_monthly_wday - устанавливает повторение структуры глобальных событий потока
mcal_event_set_recur_none - устанавливает повторение структуры глобальных событий потока
mcal_event_set_recur_weekly - устанавливает повторение структуры глобальных событий потока
mcal_event_set_recur_yearly - устанавливает повторение структуры глобальных событий потока
mcal_event_set_start - устанавливает начальную дату и время структуры глобальных событий потока
mcal_event_set_title - устанавливает заголовок/title структуры глобальных событий потока
mcal_expunge - удаляет все события, помеченные как вычёркиваемые
mcal_fetch_current_stream_event — возвращает объект, содержащий структуру событий текущего потока
mcal_fetch_event - извлекает событие из календарного потока
mcal_is_leap_year — является данный год високосным, или нет
mcal_list_alarms - возвращает список событий, имеющих включённое уведомление для данной даты/времени
mcal_list_events - возвращает список ID'ов для даты или диапазона дат
mcal_next_recurrence — возвращает следующее повторение события
mcal_open - открывает MCAL-соединение
mcal_popen - открывает постоянное MCAL-соединение
mcal_rename_calendar - переименовывает MCAL-календарь
mcal_reopen - повторно открывает MCAL-соединение
mcal_snooze - выключает уведомление о событии
mcal_store_event - модифицирует существующее событие в MCAL-календаре
mcal_time_valid — возвращает TRUE, если данный год, месяц, день является верным временем
mcal_week_of_year — возвращает номер недели для данной даты
Назад Оглавление Вперёдmb_substr Вверх mcal_append_event






LV. Функции шифровки Mcrypt

Это интерфейс с библиотекой mcrypt, который поддерживает широкий набор алгоритмов, таких как DES, TripleDES, Blowfish (по умолчанию), 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 и режимов шифровки GOST в CBC, OFB, CFB и ECB. Дополнительно он поддерживает RC6 и IDEA, которые считаются "non-free".

Mcrypt можно использовать для шифровки и дешифровки вышеприведёнными шифрами. Если вы связались с библиотекой libmcrypt-2.2.x, четыре важные команды mcrypt (mcrypt_cfb(), mcrypt_cbc(), mcrypt_ecb() и mcrypt_ofb()) могут оперировать в двух режимах, которые называются MCRYPT_ENCRYPT и MCRYPT_DECRYPT, соответственно.

LVI. Функции Mhash

Эти функции предназначены для работы mhash.

Это интерфейс с библиотекой mhash.
mhash поддерживает разнообразные хэш-алгоритмы, такие как MD5, SHA1, GOST и многие другие.

Для использования этих функций загрузите дистрибутив mhash с этого web-сайта и следуйте инструкциям по установке. Вам нужно скомпилировать PHP с параметром --with-mhash, чтобы подключить это расширение.

Mhash можно использовать для создания checksums/контрольной суммы, сообщений-дайджестов, кодов аутентификации сообщений и многого другого.

Пример 1. Обсчёт MD5-дайджеста и hmac и печать их как hex-значений

LVII. Функции Mimetype


Введение

Функции этого модуля пытаются определить content type и кодировку файла путём поиска определённой магической байтовой последовательности в специфической позиции в файле.

Это расширение получено из Apache mod_mime_magic, которая сама основана на команде file, обслуживаемой Ian F. Darwin. См. в исходном коде историю и copyright.


Требования

Эти функции всегда доступны как часть стандартного модуля.


Установка

Этому расширению нужна копия magic.mime как поставленная с командой file. Это файл также является частью самого последнего дистрибутива Linux и обычно хранится в директории /usr/share/misc.


Установка

Таблица 1. Магические опции конфигурации MIME
ИмяПо умолчаниюИзменяемаяmime_magic.magicfile "/usr/share/misc/magic.mime"PHP_INI_SYSTEM

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.


Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
mime_content_type - определяет MIME Content-type файла

LIX. Функции Ming для Flash

Предупреждение!Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Введение

Ming это открытый ресурс - библиотека (LGPL), которая позволяет создавать клипы формата SWF ("Flash"). Ming поддерживает почти все возможности Flash 4, включая: фигуры/shapes, градиенты/gradients, растры/bitmaps (pngs и jpegs), morphs ("shape tweens"), текст, кнопки, акции/actions, спрайты/sprites ("movie clips"), потоковый mp3 и трансформации цвета - единственное, что не поддерживается - звуковые события.

Ming это не акроним.

Обратите внимание, что все значения, специфицирующие длину, расстояние, размер и т.и., даны в "twips", twenty units per pixel/20 единиц на пиксел. Это, однако, довольно приблизительные величины, поскольку player масштабирует клип до размера пиксела, специфицированного в тэге embed/object, или всего фрэйма, если не внедрён.

Ming имеет преимущества по сравнению с существующим модулем PHP/libswf. Вы можете использовать Ming везде, где компилируется код, в то время как libswf это ресурс, доступный только для некоторых платформ, и Windows не входит в их число. Ming несколько изолирует от некоторых деталей формата файлов SWF, предоставляя РНР объекты-оболочки для элементов клипа. Также Ming продолжает поддерживаться; если есть какая-то возможность, которой вы не нашли, просто дайте знать по адресу ming@opaque.net.

Ming были введены в PHP 4.0.5.


Установка

Для использования Ming с PHP вам сначала нужно построить и установить Ming-библиотеку. Исходный код и инструкции находятся на домашней странице Ming http://www.opaque.net/ming/ вместе с примерами, небольшим учебником и последними новостями.

Загрузите архив ming. Распакуйте его. Перейдите в директорию Ming. make. make install.

Это построит libming.so и установит его в /usr/lib/ и скопирует ming.h в /usr/include/. Отредактируйте строку PREFIX= в Makefile для изменения директории инсталяции.

встраивание в php (unix)


       mkdir <phpdir>/ext/ming
       cp php_ext/* <phpdir>/ext/ming
       cd <phpdir>
       ./buildconf
       ./configure --with-ming <другие опции конфигурации>

Постройте и установите РНР как обычно, рестартуйте web-сервер, если нужно.

встраивание в php (unix)

Загрузите php_ming.so.gz, распакуйте и скопируйте в вашу директорию РНР-модулей. (Вы можете найти вашу директорию РНР-модулей, запустив php-config --extension-dir). Теперь либо просто добавьте extension=php_ming.so в ваш файл php.ini, либо поместите dl('php_ming.so'); в самом начале ваших Ming-скриптов.


Как использовать Ming

Ming вводит в РНР 13 новых объектов с соответствующими атрибутами и методами. Для использования их вам необходимо знать об объектах.

swfmovie()

swfshape()

swfdisplayitem()

swfgradient()

swfbitmap()

swffill()

swfmorph()

swftext()

swffont()

swftextfield()

swfsprite()

swfbutton()

swfaction()

Содержание
ming_setcubicthreshold - устанавливает cubic threshold (?)
ming_setscale - устанавливает масштаб (?)
ming_useswfversion - использует SWF-версию (?)
SWFAction - создаёт новую Action/Акцию
SWFBitmap->getHeight — возвращает высоту растра
SWFBitmap->getWidth — возвращает ширину растра
SWFBitmap - загружает Bitmap-объект
swfbutton_keypress — возвращает флаг акции для keyPress(char)
SWFbutton->addAction - добавляет акцию
SWFbutton->addShape - добавляет фигуру кнопке
SWFbutton->setAction - устанавливает акцию
SWFbutton->setdown - псевдоним для addShape(shape, SWFBUTTON_DOWN)
SWFbutton->setHit - псевдоним для addShape(shape, SWFBUTTON_HIT)
SWFbutton->setOver - псевдоним для addShape(shape, SWFBUTTON_OVER)
SWFbutton->setUp - псевдоним для addShape(shape, SWFBUTTON_UP)
SWFbutton - создаёт новую кнопку
SWFDisplayItem->addColor - добавляет данный цвет к трансформации цвета данного элемента
SWFDisplayItem->move - перемещает объект в относительных координатах
SWFDisplayItem->moveTo - перемещает объект в глобальных координатах
SWFDisplayItem->multColor - умножает трансформацию цвета элемента
SWFDisplayItem->remove - удаляет объект из клипа
SWFDisplayItem->Rotate - поворачивает объект в относительных координатах
SWFDisplayItem->rotateTo - поворачивает объект в глобальных координатах
SWFDisplayItem->scale - масштабирует объект в относительных координатах
SWFDisplayItem->scaleTo - масштабирует объект в глобальных координатах
SWFDisplayItem->setDepth - устанавливает z-порядок (в стэке)
SWFDisplayItem->setName - устанавливает имя объекта
SWFDisplayItem->setRatio - устанавливает пропорцию объекта
SWFDisplayItem->skewX - устанавливает X-наклон
SWFDisplayItem->skewXTo - устанавливает X-наклон
SWFDisplayItem->skewY - устанавливает Y-наклон
SWFDisplayItem->skewYTo - устанавливает Y-наклон
SWFDisplayItem - создаёт новый объект displayitem
SWFFill->moveTo - перемещает fill-источник
SWFFill->rotateTo - устанавливает fill-поворот
SWFFill->scaleTo - устанавливает fill-масштаб
SWFFill->skewXTo - устанавливает fill x-наклон
SWFFill->skewYTo - устанавливает fill y-наклон
SWFFill - загружает SWFFill-объект
swffont->getwidth — возвращает ширину строки
SWFFont - загружает определение шрифта
SWFGradient->addEntry - добавляет вхождение в gradient-список
SWFGradient - создаёт gradient-объект
SWFMorph->getshape1 - получает дескриптор для начальной фигуры
SWFMorph->getshape2 - получает дескриптор для конечной фигуры
SWFMorph - создаёт новый SWFMorph-объект
SWFMovie->add - добавляет тип и данные в клип
SWFMovie->nextframe - перемещает на следующий фрэйм анимации
SWFMovie->output - выполняет дамп вашего любовно приготовленного клипа
SWFMovie->remove - удаляет экземпляр объекта из display-списка
SWFMovie->save - сохраняет ваш клип в файле
SWFMovie->setbackground - устанавливает цвет фона
SWFMovie->setdimension - устанавливает ширину и высоту клипа
SWFMovie->setframes - устанавливает общее количество фрэймов в анимации
SWFMovie->setrate - устанавливает класс фрэйма анимации
SWFMovie->streammp3 - запускает поток MP3-файла
SWFMovie - создаёт новый movie-объект, представляющий клип SWF версии 4
SWFShape->addFill - добавляет сплошную заливку фигуре
SWFShape->drawCurve - рисует кривую (относительно)
SWFShape->drawCurveTo - рисует кривую
SWFShape->drawLine - рисует линию (относительно)
SWFShape->drawLineTo - рисует линию
SWFShape->movePen - перемещает карандаш фигуры (относительно)
SWFShape->movePenTo - перемещает карандаш фигуры
SWFShape->setLeftFill - устанавливает левый цвет растра
SWFShape->setLine - устанавливает стиль линии фигуры
SWFShape->setRightFill - устанавливает правый цвет растра
SWFShape - создаёт новый shape-объект
SWFSprite->add - добавляет объект в спрайт
SWFSprite->nextframe - перемещает к следующему фрэйму анимации
SWFSprite->remove - удаляет объект из спрайта
SWFSprite->setframes - устанавливает общее количество фрэймов в анимации
SWFSprite - создаёт клип (спрайт)
SWFText->addString - рисует строку
SWFText->getWidth - вычисляет ширину строки
SWFText->moveTo - перемещает карандаш
SWFText->setColor - устанавливает текущий цвет шрифта
SWFText->setFont - устанавливает текущий шрифт
SWFText->setHeight - устанавливает высоту текущего шрифта
SWFText->setspacing - устанавливает spacing текущего шрифта
SWFText - создаёт новый SWFText-объект
SWFTextField->addstring - объединяет данную строку с текстовым полем
SWFTextField->align - устанавливает выравнивание текстового поля
SWFTextField->setbounds - устанавливает ширину и высоту текстового поля
SWFTextField->setcolor - устанавливает цвет текстового поля
SWFTextField->setFont - устанавливает шрифт текстового поля
SWFTextField->setHeight - устанавливает высоту шрифта данного текстового поля
SWFTextField->setindentation - устанавливает отступ первой строчки абзаца
SWFTextField->setLeftMargin - устанавливает ширину левого поля текстового поля
SWFTextField->setLineSpacing - устанавливает межстрочный интервал текстового поля
SWFTextField->setMargins - устанавливает ширину полей текстового поля
SWFTextField->setname - устанавливает имя переменной
SWFTextField->setrightMargin - устанавливает ширину правого поля текстового поля
SWFTextField - создаёт объект текстового поля

LX. Прочие функции

Здесь даны функции, не вошедшие в другие категории.

Содержание
connection_aborted - возвращает TRUE, если клиент разорвал соединение
connection_status - возвращает битовое поле статуса соединения
connection_timeout - возвращает TRUE, если скрипт взял таймаут
constant - возвращает значение константы
define - определяет именованную константу
defined - проверяет, существует ли данная именованная константа
die - псевдоним exit()
eval - вычисляет строку как PHP-код
exit - выводит сообщение и прерывает выполнение текущего скрипта
get_browser - сообщает, какой браузер у пользователя
highlight_file - подсветка синтаксиса файла
highlight_string - подсветка синтаксиса строки
ignore_user_abort - устанавливает, должно ли отсоединение клиента прерывать выполнение скрипта
iptcparse - разбирает двоичный IPTC http://www.iptc.org/ блок в отдельные тэги
leak - утечка памяти
pack - упаковывает данные в бинарную строку
show_source - подсветка синтаксиса файла
sleep - задержать выполнение
uniqid - генерирует уникальный id
unpack - распаковывает данные из бинарной строки
usleep - задержка выполнения в микросекундах

LXI. Функции mnoGoSearch

Эти функции дают вам доступ к mnoGoSearch (бывшая UdmSearch) свободной поисковой машине. Чтобы иметь возможность работать с этими функциями, вы обязаны скомпилировать РНР с поддержкой mnogosearch с использованием опции --with-mnogosearch. Если вы используете эту опцию без специфицирования пути к mnogosearch, РНР будет по умолчанию искать mnogosearch в директории /usr/local/mnogosearch. Если вы установили mnogosearch в другое место, вы должны специфицировать его: --with-mnogosearch=DIR.

mnoGoSearch это программа полнофункциональной поисковой машины для intranet и internet-серверов, распространяемая по GNU-лицензии.
mnoGoSearch имеет уникальные возможности, делающие её пригодной для использования в широком круге приложений - от поиска на вашем сайте до специализированной поисковой системы: для поиска кулинарных рецептов, ftp-архивов, новостей etc. Она предлагает полнотекстовое индексирование и поиск в HTML, PDF и текстовых документах.
mnoGoSearch состоит из двух частей. Первая это механизм индексирования (индексатор). Цель индексатора - проходить по HTTP, FTP, NEWS-серверам или локальным файлам, рекурсивно выгребая все документы и сохраняя метаданные об этих документах в БД SQL эффективным способом. После получения ссылки на каждый документ соответствующим URL, метаданные, собранные индексатором, используются позднее в процессах поиска. Поиск выполняется по Web-интерфейсу. Включены также C CGI, PHP и Perl-интерфейсы для поиска.

Примечание: РНР содержит также встроенную библиотеку mysql access, которую можно использовать для доступа к mysql. Известно, что mnoGoSearch несовместима с этой встроенной библиотекой и может работать только с общими/родовыми библиотеками mysql. Таким образом, если вы используете mnoGoSearch с mysql, то в процессе конфигурирования РНР вы должны указать директорию инсталяции mysql, которая была использована в ходе конфигурирования mnoGoSearch, т.е., например,
--with-mnogosearch --with-mysql=/usr.

Вам необходима как минимум версия 3.1.10 mnoGoSearch для использования этих функций.

Дополнительную информацию о mnoGoSearch можно найти на http://www.mnogosearch.ru/

Содержание
udm_add_search_limit - добавляет различные ограничения для поиска
udm_alloc_agent - выделяет mnoGoSearch-сессию
udm_api_version - получает версию mnoGoSearch API
udm_cat_list - получает все категории одного уровня с текущей
udm_cat_path - получает путь к текущей директории
udm_check_charset - проверяет, известен ли данный набор символов mnogosearch
udm_check_stored - проверяет хранимое соединение
udm_clear_search_limits - очищает все ограничения поиска mnoGoSearch
udm_close_stored - закрывает хранимое соединение
udm_crc32 - возвращает контрольную сумму CRC32 данной строки
udm_errno - получает номер ошибки mnoGoSearch
udm_error - получает сообщение об ошибке mnoGoSearch
udm_find - выполняет поиск
udm_free_agent - освобождает mnoGoSearch-сессию
udm_free_ispell_data - освобождает память, выделенную для ispell-данных
udm_free_res - освобождает mnoGoSearch result
udm_get_doc_count - получает общее количество документов в БД
udm_get_res_field - извлекает поле mnoGoSearch result
udm_get_res_param - получает mnoGoSearch result-параметры
udm_load_ispell_data - загружает ispell-данные
udm_open_stored - открывает соединение для сохранения
udm_set_agent_param - устанавливает параметры mnoGoSearch agent-сессии

LXIV. Функции обработчика сессии Mohawk Software

msession это интерфейс с высокоскоростным демоном сессий, который может работать локально или удалённо. Он разработан для предоставления менеждмента сессий PHP web-фермы.

Программа сервера сессий находится на http://www.mohawksoft.com/phoenix/

Содержание
msession_connect - соединяется с msession-сервером
msession_count - получает счётчик сессии
msession_create - создаёт сессию
msession_destroy - уничтожает сессию
msession_disconnect - закрывает соединение с msession-сервером
msession_find - находит значение
msession_get_array - получает массив ... ?
msession_get - получает значение из сессии
msession_getdata - получает данные ... ?
msession_inc - выполняет инкремент значения в сессии
msession_list - список ... ?
msession_listvar - список сессий с переменной
msession_lock - блокирует сессию
msession_plugin - вызывает escape-функцию с компонентом msession personality
msession_randstr - получает случайную строку
msession_set_array - устанавливает массив ...
msession_set - устанавливает значение в сессии
msession_setdata - устанавливает данные ... ?
msession_timeout - устанавливает/получает таймаут сессии
msession_uniq - получает uniq id
msession_unlock - разблокирует сессию

LXII. Функции mSQL

Эти функции дают доступ к серверам баз данных mSQL. Чтобы иметь возможность работать с этими функциями, вы обязаны скомпилировать РНР с поддержкой msql, используя опцию --with-msql[=dir]. Расположение по умолчанию /usr/local/Hughes.

Дополнительную информацию о mSQL см. на http://www.hughes.com.au/

Содержание
msql_affected_rows - возвращает количество задействованных рядов
msql_close - закрывает mSQL-соединение
msql_connect - открывает mSQL-соединение
msql_create_db - создаёт БД mSQL
msql_createdb - создаёт БД mSQL
msql_data_seek - передвигает внутренний указатель ряда
msql_dbname - получает имя текущей БД mSQL
msql_drop_db - удаляет БД mSQL
msql_dropdb - удаляет БД mSQL
msql_error - возвращает сообщение об ошибке последнего вызова msql
msql_fetch_array - извлекает ряд как массив
msql_fetch_field - получает информацию поля
msql_fetch_object - извлекает ряд как объект
msql_fetch_row - получает ряд как перечислимый массив
msql_field_seek - устанавливает смещение поля
msql_fieldflags - получает флаги поля
msql_fieldlen - получает длину поля
msql_fieldname - получает имя поля
msql_fieldtable - получает имя таблицы поля
msql_fieldtype - получает тип поля
msql_free_result - освобождает результирующую память
msql_freeresult - освобождает результирующую память
msql_list_dbs - список БД mSQL на сервере
msql_list_fields - список результирующих полей
msql_list_tables - список таблиц в БД mSQL
msql_listdbs - список БД mSQL на сервере
msql_listfields - список результирующих полей
msql_listtables - список таблиц в БД mSQL
msql_num_fields - получает количество полей в результате
msql_num_rows - получает количество рядов в результате
msql_numfields - получает количество полей в результате
msql_numrows - получает количество рядов в результате
msql_pconnect - открывает постоянное mSQL-соединение
msql_query - отправляет mSQL query/запрос
msql_regcase - создаёт регулярное выражение для поиска без учёта регистра символов
msql_result - получает результирующие данные
msql_select_db - делает выборку из БД mSQL
msql_selectdb - делает выборку из БД mSQL
msql_tablename - получает имя таблицы поля
msql - отправляет mSQL query

LVIII. Функции Microsoft SQL Server

Расширение MSSQL доступно только для систем Win32. Вы можете использовать Sybase-расширение для соединения с БД MSSQL на других платформах.

Эти функции дают доступ к БД MS SQL-сервера. Это расширение требует, чтобы утилиты MS SQL Client Tools были установлены в той системе, где установлен PHP. Client Tools могут быть установлены с компакт-диска MS SQL Server или копированием ntwdblib.dll из директории \winnt\system32 на сервере в \winnt\system32 в боксе PHP. Копирование ntwdblib.dll даёт только доступ. Конфигурирование клиента потребует установки всех утилит.

MSSQL-расширение подключается добавлением строки extension=php_mssql.dll в файл php.ini.

Содержание
mssql_bind - добавляет параметр к хранимой процедуре или удалённой хранимой процедуре
mssql_close - закрывает соединение с MS SQL-сервером
mssql_connect - открывает соединение с MS SQL-сервером
mssql_data_seek - передвигает внутренний указатель ряда
mssql_execute - выполняет хранимую процедуру на БД MS-SQL-сервера
mssql_fetch_array - извлекает ряд как массив
mssql_fetch_assoc - возвращает ассоциативный массив текущего ряда в result set (результирующем наборе), специфицированном через result_id
mssql_fetch_batch - возвращает следующий пакет записей
mssql_fetch_field - получает информацию поля
mssql_fetch_object - извлекает ряд как объект
mssql_fetch_row - получает рад как перечислимый массив
mssql_field_length - получает длину поля
mssql_field_name - получает имя поля
mssql_field_seek - устанавливает смещение поля
mssql_field_type - получает тип поля
mssql_free_result - освобождает результирующую память
mssql_get_last_message - возвращает последнее сообщение сервера (через min_message_severity?)
mssql_guid_string - конвертирует 16-байтный бинарный GUID в строку
mssql_init - инициализирует хранимую процедуру или удалённую хранимую процедуру
mssql_min_error_severity - устанавливает самый нижний уровень серьёзности ошибок
mssql_min_message_severity - устанавливает самый нижний уровень серьёзности сообщений
mssql_next_result - передвигает внутренний указатель результата на следующий результат
mssql_num_fields - получает количество полей в результате
mssql_num_rows - получает количество рядов в результате
mssql_pconnect - открывает постоянное соединение с MS SQL
mssql_query - отправляет MS SQL query/запрос
mssql_result - получает результирующие данные
mssql_rows_affected - возвращает количество записей, задействованных в запросе
mssql_select_db - выбирает БД MS SQL

LXV. Функции muscat

Содержание
muscat_close - закрывает muscat-сессию и возвращает всю память обратно в РНР
muscat_get - получает строку обратно из ядра muscat api
muscat_give - отправляет строку ядру muscat api
muscat_setup_net - создаёт новую muscat-сессию и возвращает дескриптор
muscat_setup - создаёт новую muscat-сессию и возвращает дескриптор

LXIII. Функции MySQL

Эти функции дают доступ к серверам БД MySQL. Информацию о MySQL см. на http://www.mysql.com/

Документация по MySQL находится на http://www.mysql.com/documentation/


Требования

Чтобы иметь возможность работать с этими функциями, вы обязаны скомпилировать РНР с поддержкой MySQL.


Установка

С помощью опции конфигурации --with-mysql вы включаете доступ PHP к БД MySQL. Если вы используете эту опцию без специфицирования пути к MySQL, PHP будет использовать встроенные клиентские библиотеки MySQL. В PHP4 поддержка MySQL всегда включена; Если вы не специфицируете эту опцию конфигурации, используются связанные библиотеки. Пользователи, запускающие другие приложения, которые используют MySQL (например, при запуске PHP 3 и PHP 4 как конкурирующих модулей Аpache, или auth-mysql), всегда должны специфицировать путь к MySQL: --with-mysql=/path/to/mysql. Это заставит PHP использовать клиентские библиотеки, установленные MySQL, исключая любые конфликты.

Предупреждение!При загрузке этого расширения вместе с расширением recode могут возникать проблемы со стартом и обломом РНР. См. расширение recode.

Установка

Поведение функций MySQL определяется установками в глобальном файле конфигурации php.ini.

Таблица 1. Опции конфигурации MySQL
ИмяПо умолчанию Изменяемаяmysql.allow_persistent"On"PHP_INI_SYSTEM mysql.max_persistent"-1"PHP_INI_SYSTEMmysql.max_links "-1"PHP_INI_SYSTEMmysql.default_portNULLPHP_INI_ALL mysql.default_socketNULLPHP_INI_ALLmysql.default_host NULLPHP_INI_ALLmysql.default_userNULLPHP_INI_ALL mysql.default_passwordNULLPHP_INI_ALL

Дополнительные детали и определение констант PHP_INI_* см. в ini_set().

Вот краткое описание директив конфигурации.

mysql.allow_persistent boolean

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

mysql.max_persistent integer

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

mysql.max_links integer

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

mysql.default_port string

Номер порта по умолчанию TCP для использования при соединении с сервером БД, если иной порт не специфицирован. Если порт по умолчанию не специфицирован, значение получается из переменной окружения MYSQL_TCP_PORT, вхождения mysql-tcp в /etc/services или константы времени компиляции MYSQL_PORT, в указанном порядке. Win32 используют только константу MYSQL_PORT.

mysql.default_socket string

Имя сокета по умолчанию для использования при соединении с локальным сервером БД, если иное имя сокета не специфицировано.

mysql.default_host string

Хост сервера по умолчанию для использования при соединении с локальным сервером БД, если другой хост не специфицирован. Не примеряется в режиме safe mode.

mysql.default_user string

Имя пользователя по умолчанию для использования при соединении с сервером БД, если иное имя не специфицировано. Не применяется в режиме safe mode.

mysql.default_password string

Пароль по умолчанию для использования при соединении с сервером БД, если иной пароль не специфицирован. Не применяется в режиме safe mode.


Типы ресурсов

Есть два типа ресурсов, используемых в MySQL-модуле. Первый это идентификатор ссылки для соединения с БД, второй - ресурс, содержащий результат выполнения запроса.


Предопределённые константы

Функция mysql_fetch_array() использует константу для различных типов результирующих массивов. Определены следующие константы:

Таблица 2. Константы извлечения MySQL
константазначениеMYSQL_ASSOC Столбцы возвращаются в массиве, содержащем имя поля как индекс массива. MYSQL_BOTHСтолбцы возвращаются в массиве, содержащем числовой индекс и имя поля как индекс массива. MYSQL_NUMСтолбцы возвращаются в массиве, содержащем числовой индекс полей. Этот индекс начинается с 0, первого поля результата.MYSQL_STORE_RESULT Специфицирует, что MySQL-результат должен буферизоваться. MYSQL_USE_RESULTСпецифицирует, что MySQL-результат не должен буферизоваться.

Примеры

Данный пример показывает, как соединиться с БД, выполнить запрос/query, напечатать результирующие ряды и отсоединиться от БД MySQL.

LXVII. Функции управления экраном терминала Ncurses

Предупреждение!Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.


Что такое ncurses?

ncurses (new curses/новые курсы) это свободная программная эмуляция курсов в System V Rel 4.0 (и выше). Она использует формат terminfo, поддерживает заполнения, цвета, множественную подсветку/highlights, отображение символов формы и ключей функций.


Платформы

Ncurses имеется для следующих платформ:

AIX

BeOS

Cygwin

Digital Unix (aka OSF1)

FreeBSD

GNU/Linux

HPUX

IRIX

OS/2

SCO OpenServer

Solaris

SunOS


Требования

Вам необходимы библиотеки и header-файлы ncurses. Загрузите последнюю версию с ftp://ftp.gnu.org/pub/gnu/ncurses/ или с другого зеркала GNU.


Установка

Чтобы эти функции работали, вы должны скомпилировали CGI-версию PHP с опцией --with-ncurses.


Предопределённые константы Ncurses

Коды ошибок

При ошибке ncurses-функции возвращают NCURSES_ERR.

Цвета

Таблица 1. Константы цветов ncurses
константазначение NCURSES_COLOR_BLACKнет цвета (чёрный)NCURSES_COLOR_WHITE белыйNCURSES_COLOR_REDкрасный - поддерживается, если терминал находится в режиме color NCURSES_COLOR_GREENзелёный - поддерживается, если терминал находится в режиме color NCURSES_COLOR_YELLOWжёлтый - поддерживается, если терминал находится в режиме color NCURSES_COLOR_BLUEсиний - поддерживается, если терминал находится в режиме color NCURSES_COLOR_CYANcyan - поддерживается, если терминал находится в режиме color NCURSES_COLOR_MAGENTAmagenta - поддерживается, если терминал находится в режиме color

Клавиши

Таблица 2. Константы клавиш ncurses
константазначениеNCURSES_KEY_F0 - NCURSES_KEY_F64 функциональные клавиши F1 - F64NCURSES_KEY_DOWNстрелка вниз NCURSES_KEY_UPстрелка вверхNCURSES_KEY_LEFTстрелка влево NCURSES_KEY_RIGHTстрелка вправоNCURSES_KEY_HOMEклавиша home (upward+left arrow) NCURSES_KEY_BACKSPACEbackspaceNCURSES_KEY_DLудалить строку NCURSES_KEY_ILвставить строкуNCURSES_KEY_DCудалить символ NCURSES_KEY_ICвставить символ или войти в режим insert/вставки NCURSES_KEY_EICвыйти из режима вставки символовNCURSES_KEY_CLEARочистить экран NCURSES_KEY_EOSочистить до конца экранаNCURSES_KEY_EOL очистить до конца строкиNCURSES_KEY_SFпрокрутить вперёд на одну строку NCURSES_KEY_SRпрокрутить назад на одну строкуNCURSES_KEY_NPAGE следующая страницаNCURSES_KEY_PPAGEпредыдущая страница NCURSES_KEY_STABустановить tab/табуляциюNCURSES_KEY_CTABочистить tab NCURSES_KEY_CATABочистить все tabsNCURSES_KEY_SRESETмягкий (частичный) reset NCURSES_KEY_RESETreset (или жёсткий reset)NCURSES_KEY_PRINT printNCURSES_KEY_LLlower left/самая нижняя леваяNCURSES_KEY_A1 upper left цифрового блокаNCURSES_KEY_A3upper right цифрового блока NCURSES_KEY_B2center цифрового блокаNCURSES_KEY_C1lower left цифрового блока NCURSES_KEY_C3lower right цифрового блокаNCURSES_KEY_BTAB back tabNCURSES_KEY_BEGСодержаниеNCURSES_KEY_CANCEL cancelNCURSES_KEY_CLOSEcloseNCURSES_KEY_COMMAND cmd (command/команда)NCURSES_KEY_COPYcopyNCURSES_KEY_CREATE createNCURSES_KEY_ENDendNCURSES_KEY_EXITexit NCURSES_KEY_FINDfindNCURSES_KEY_HELPhelpNCURSES_KEY_MARK markNCURSES_KEY_MESSAGEmessageNCURSES_KEY_MOVE moveNCURSES_KEY_NEXTnextNCURSES_KEY_OPENopen NCURSES_KEY_OPTIONSопцииNCURSES_KEY_PREVIOUSprevious NCURSES_KEY_REDOredoNCURSES_KEY_REFERENCEref (reference) NCURSES_KEY_REFRESHrefreshNCURSES_KEY_REPLACEreplace NCURSES_KEY_RESTARTrestartNCURSES_KEY_RESUMEresume NCURSES_KEY_SAVEsaveNCURSES_KEY_SBEGshiftet beg (beginning) NCURSES_KEY_SCANCELshifted cancelNCURSES_KEY_SCOMMANDshifted command NCURSES_KEY_SCOPYshifted copyNCURSES_KEY_SCREATEshifted create NCURSES_KEY_SDCshifted delete charNCURSES_KEY_SDLshifted delete line NCURSES_KEY_SELECTselectNCURSES_KEY_SENDshifted end NCURSES_KEY_SEOLshifted end of lineNCURSES_KEY_SEXITshifted exit NCURSES_KEY_SFINDshifted findNCURSES_KEY_SHELPshifted help NCURSES_KEY_SHOMEshifted homeNCURSES_KEY_SICshifted input NCURSES_KEY_SLEFTshifted left arrowNCURSES_KEY_SMESSAGEshifted message NCURSES_KEY_SMOVEshifted moveNCURSES_KEY_SNEXTshifted next NCURSES_KEY_SOPTIONSshifted optionsNCURSES_KEY_SPREVIOUSshifted previous NCURSES_KEY_SPRINTshifted printNCURSES_KEY_SREDOshifted redo NCURSES_KEY_SREPLACEshifted replaceNCURSES_KEY_SRIGHTshifted right arrow NCURSES_KEY_SRSUMEshifted resumeNCURSES_KEY_SSAVEshifted save NCURSES_KEY_SSUSPENDshifted suspendNCURSES_KEY_UNDOundo NCURSES_KEY_MOUSEmouse event has occuredNCURSES_KEY_MAXmaximum key value

Мышь

Таблица 3. mouse-константы
константазначениеNCURSES_BUTTON1_RELEASED - NCURSES_BUTTON4_RELEASED кнопка (1-4) отпущенаNCURSES_BUTTON1_PRESSED - NCURSES_BUTTON4_PRESSED кнопка (1-4) нажатаNCURSES_BUTTON1_CLICKED - NCURSES_BUTTON4_CLICKED кнопка (1-4) щёлкнулаNCURSES_BUTTON1_DOUBLE_CLICKED - NCURSES_BUTTON4_DOUBLE_CLICKED кнопка (1-4) дважды щёлкнулаNCURSES_BUTTON1_TRIPLE_CLICKED - NCURSES_BUTTON4_TRIPLE_CLICKED кнопка (1-4) трижды щёлкнулаNCURSES_BUTTON_CTRLctrl нажата при щелчке NCURSES_BUTTON_SHIFTshift нажата при щелчкеNCURSES_BUTTON_ALT alt нажата при щелчкеNCURSES_ALL_MOUSE_EVENTSсообщает обо всех событиях мыши NCURSES_REPORT_MOUSE_POSITIONсообщает о позиции мыши
Содержание
ncurses_addch - добавляет символ в текущей позиции и продвигает курсор вперёд
ncurses_addchnstr - добавляет атрибуированную строку со специфицированной длиной в текущей позиции
ncurses_addchstr - добавляет атрибуированную строку в текущей позиции
ncurses_addnstr - добавляет строку со специфицированной длиной в текущей позиции
ncurses_addstr - выводит текст в текущей позиции
ncurses_assume_default_colors - определяет цвет по умолчанию для цвета 0
ncurses_attroff - отключает данный атрибут
ncurses_attron - включает данный атрибут
ncurses_attrset - устанавливает данные атрибуты
ncurses_baudrate - возвращает baudrate терминала
ncurses_beep - разрешает терминалу подать сигнал
ncurses_bkgd - устанавливает свойство background экрана терминала
ncurses_bkgdset - управляет фоном экрана
ncurses_border - рисует рамку вокруг экрана с использованием атрибуированных символов
ncurses_can_change_color - проверяет, можем ли мы изменить цвета терминала
ncurses_cbreak - отключает буферизацию ввода
ncurses_clear - очищает экран
ncurses_clrtobot - очищает экран от текущей позиции до низа
ncurses_clrtoeol - очищает экран от текущей позиции до конца строчки
ncurses_color_set - устанавливает цвета переднего плана и фона
ncurses_curs_set - устанавливает статус курсора
ncurses_def_prog_mode - сохраняет режим терминала (программы)
ncurses_def_shell_mode - сохраняет режим терминала (оболочки/shell)
ncurses_define_key - определяет keycode/код клавиши
ncurses_delay_output - задерживает вывод на терминал, используя заполняющие символы
ncurses_delch - удаляет символ в текущей позиции, остаток строки сдвигается влево
ncurses_deleteln - удаляет строчку в текущей позиции, остаток экрана сдвигается вверх
ncurses_delwin - удаляет ncurses-окно
ncurses_doupdate - записывает все подготовленные обновления в терминал
ncurses_echo - активирует отображение ввода с клавиатуры
ncurses_echochar - вывод одного символа, включая обновление
ncurses_end - останавливает использование ncurses, очищает экран
ncurses_erase - стирает экран терминала
ncurses_erasechar - возвращает текущий удалённый символ
ncurses_filter -
ncurses_flash - вспышка на экране терминала (визуальный сигнал)
ncurses_flushinp - очищает буфер клавиатурного ввода
ncurses_getch - читает символ с клавиатуры
ncurses_getmouse - читает событие от мыши
ncurses_halfdelay - переводит терминал в режим halfdelay
ncurses_has_colors - проверяет, имеет ли терминал цвета
ncurses_has_ic - проверяет возможность вставки/удаления
ncurses_has_il - проверяет возможность вставки/удаления
ncurses_has_key - проверяет существование функциональной клавиши на клавиатуре терминала
ncurses_hline - рисует горизонтальную линию в текущей позиции, используя атрибуированный символ и max. n длину символов
ncurses_inch - получает символ и атрибут в текущей позиции
ncurses_init_color - устанавливает новое RGB-значение цвета
ncurses_init_pair - размещает цветовую пару
ncurses_init - инициализирует ncurses
ncurses_insch - вставляет символ, перемещая остаток строки, включая символ в текущей позиции
ncurses_insdelln - вставляет строчки перед текущей строчкой, прокручивая вниз (отрицательные числа удаляют и прокручивают вверх)
ncurses_insertln - вставляет строчку, перемещая остаток экрана вниз
ncurses_insstr - вставляет string в текущей позиции, перемещая остаток строчки вправо
ncurses_instr - читает строчку с экрана терминала
ncurses_isendwin - Ncurses находится в режиме endwin, может выполняться нормальный вывод экрана
ncurses_keyok - включает или отключает keycode/код клавиши
ncurses_killchar - возвращает kill-символ текущей строки
ncurses_longname - возвращает описание терминала
ncurses_mouseinterval - устанавливает timeout для щелчка кнопки мыши
ncurses_mousemask - устанавливает опции мыши
ncurses_move - переводит позицию вывода
ncurses_mvaddch - переводит текущую позицию и добавляет символ
ncurses_mvaddchnstr - переводит позицию и добавляет атрибуированную строку специфицированной длины
ncurses_mvaddchstr - переводит позицию и добавляет атрибуированную строку
ncurses_mvaddnstr - переводит позицию и добавляет строку со специфицированной длиной
ncurses_mvaddstr - переводит позицию и добавляет строку
ncurses_mvcur - переводит курсор немедленно
ncurses_mvdelch - переводит позицию и удаляет символ, сдвигая остаток строчки влево
ncurses_mvgetch - переводит позицию и получает символ в новой позиции
ncurses_mvhline - устанавливает новую позицию рисует горизонтальную линию, используя трибуированный символ и max. n длину символов
ncurses_mvinch - переводит позицию и получает атрибуированный символ в новой позиции
ncurses_mvvline - устанавливает новую позицию и рисует вертикальную линию, используя атрибуированный символ и max. n длину символов
ncurses_mvwaddstr - добавляет строку в новой позиции в окне
ncurses_napms - Sleep
ncurses_newwin - создаёт новое окно
ncurses_nl - транслирует newline и carriage return / line feed
ncurses_nocbreak - переключает терминал в режим cooked
ncurses_noecho - отключает отображение ввода с клавиатуры
ncurses_nonl - не транслировать newline и carriage return / line feed
ncurses_noqiflush - не зачищает сигнальные символы
ncurses_noraw - отключает терминал от режима raw
ncurses_putp -
ncurses_qiflush - зачищает сигнальные символы
ncurses_raw - переключает терминал в режим raw
ncurses_refresh - обновляет экран
ncurses_resetty - восстанавливает сохранённый статус терминала
ncurses_savetty - сохраняет статус терминала
ncurses_scr_dump - выполняет дамп содержимого экрана в файл
ncurses_scr_init - инициализирует экран из дампа файла
ncurses_scr_restore - восстанавливает экран из дампа файла
ncurses_scr_set - наследует экран из дампа файла
ncurses_scrl - прокручивает содержимое окна верх или вниз без изменения текущей позиции
ncurses_slk_attr - возвращает ключевой атрибут текущей soft-метки/label
ncurses_slk_attroff -
ncurses_slk_attron -
ncurses_slk_attrset -
ncurses_slk_clear - очищает soft-метки с экрана
ncurses_slk_color - устанавливает цвет для ключей soft-меток
ncurses_slk_init - инициализирует soft label key-функции
ncurses_slk_noutrefresh - копирует soft label ключи в виртуальный экран
ncurses_slk_refresh - копирует soft label ключи в экран
ncurses_slk_restore - восстанавливает soft label keys
ncurses_slk_touch - форсирует вывод при выполнении ncurses_slk_noutrefresh
ncurses_standend - останавливает использование атрибута 'standout'
ncurses_standout - стартует использование атрибута 'standout'
ncurses_start_color - стартует использование цветов
ncurses_termattrs - возвращает логическое ИЛИ всех флагов атрибутов, поддерживаемых терминалом
ncurses_termname - возвращает (short)-имя терминала
ncurses_timeout - устанавливает timeout для специальных последовательностей клавиш
ncurses_typeahead - специфицирует другой filedescriptor для проверки typeahead
ncurses_ungetch - помещает символ обратно в поток ввода
ncurses_ungetmouse - проталкивает событие от мыши в очередь/queue
ncurses_use_default_colors - присваивает цвета по умолчанию color id -1
ncurses_use_env - управляет использованием информации окружения о размере терминала
ncurses_use_extended_names - управляет использованием расширенных имён в описаниях terminfo
ncurses_vidattr -
ncurses_vline - рисует вертикальную линию в текущей позиции, используя атрибуированный символ и max. n длину символов
ncurses_wrefresh - обновляет окно экрана терминала

LXVI. Сетевые функции

Содержание
checkdnsrr - проверяет записи DNS, соответствующие данному имени Internet-хоста или IP-адресу
closelog - закрывает соединение с системным логером/logger
debugger_off - отключает внутренний отладчик PHP
debugger_on - включает внутренний отладчик PHP
define_syslog_variables - инициализирует все константы, относящиеся к syslog
fsockopen - открывает соединение сокета домена Internet или Unix
gethostbyaddr - получает имя Internet-хоста, соответствующее данному IP-адресу
gethostbyname - получает IP-адрес, соответствующее имени данного Internet-хоста
gethostbynamel - получает список IP-адресов, соответствующих имени данного Internet-хоста
getmxrr - получает MX-записи, соответствующих имени данного Internet-хоста
getprotobyname - получает номер протокола, ассоциированный с именем протокола
getprotobynumber - получает имя протокола, ассоциированное с номером протокола
getservbyname - получает номер порта, ассоциированного с Internet-сервисом и протоколом
getservbyport - получает Internet-сервис, соответствующий порту и протоколу
ip2long - конвертирует строку, содержащую (IPv4) Internet Protocol-адрес с точкой, в соответствующий адрес
long2ip - конвертирует (IPv4) Internet-сетевой адрес в строку стандартного Internet-формата с точкой
openlog - открывает соединение с системным логером
pfsockopen - открывает постоянное соединение сокета домена Internet или Unix
socket_get_status - возвращает информацию о потоке существующего сокета
socket_set_blocking - устанавливает режим blocking/non-blocking сокета
socket_set_timeout - устанавливает timeout-период сокета
syslog - генерирует системное log-сообщение

CVIII. Фукнции YP/NIS

NIS (раньше назывались Yellow Pages) даёт возможность сетевого обслуживания важных административных файлов (например, файла паролей). Дополнительно см. NIS manpage и Введение в YP/NIS. Имеется также книга Managing NFS and NIS, автор Hal Stern.

Чтобы эти функции работали, вы должны сконфигурировать PHP с опцией --with-yp(PHP 3)
или --enable-yp(PHP 4).

Содержание
yp_all - проходит по карте и вызывает функцию для каждого вхождения
yp_cat - возвращает массив, содержащий всю карту/map
yp_err_string - возвращает строку ошибки, ассоциированную с предыдущей операцией
yp_errno - возвращает код ошибки предыдущей операции
yp_first - возвращает первую пару key-value из именованной карты
yp_get_default_domain - извлекает NIS-домен по умолчанию машины
yp_master - возвращает имя машины NIS мастер-сервера карты
yp_match - возвращает совпавшую строчку
yp_next - возвращает следующую пару key-value в именованной карте
yp_order - возвращает номер ордера карты

LXVIII. Функции Lotus Notes

Предупреждение!Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.
Содержание
notes_body - открывает сообщение msg_number в специфицированном mailbox на специфицированном сервере
notes_copy_db - создаёт заметку/note с использованием form_name
notes_create_db - создаёт БД Lotus Notes
notes_create_note - создаёт note с использованием form_name
notes_drop_db - удаляет БД Lotus Notes
notes_find_note - возвращает note id, найденный в database_name. Специфицирует имя заметки/note
notes_header_info - открывает сообщение msg_number в специфицированном mailbox не специфицированном сервере
notes_list_msgs - возвращает заметки из выбранной database_name
notes_mark_read - маркирует note_id как прочитанную для пользователя user_name
notes_mark_unread - маркирует note_id как непрочитанную для пользователя user_name
notes_nav_create - создаёт navigator-имя в database_name
notes_search - находит заметки, которые совпадают с ключевыми словами, в database_name
notes_unread - возвращает id'ы не прочитанных заметок для текущего пользователя user_name
notes_version - получает версию Lotus Notes

Эти функции дают возможность доступа

Эти функции дают возможность доступа к БД Oracle8 и Oracle7. Используется интерфейс Oracle8 Call-Interface (OCI8). Для использования этого расширения вам понадобятся клиентские библиотеки Oracle8.

Это расширение более гибко, чем стандартное расширение Oracle. Оно поддерживает связку глобальных и локальных переменных PHP с заглушками Oracle, имеет полную поддержку LOB, FILE и ROWID и позволяет использовать предоставленные пользователем определённые переменные.

Прежде чем использовать это расширение, убедитесь, что вы соответствующим образом настроили ваши переменные окружения oracle для пользователя Oracle, а также для пользователя вашего web-демона. Вот переменные, которые вам может понадобиться установить: ORACLE_HOME

ORACLE_SID

LD_PRELOAD

LD_LIBRARY_PATH

NLS_LANG

ORA_NLS33

После настройки переменных окружения для пользователя вашего web-сервера не забудьте также добавить пользователя web-сервера (nobody, www) в группу oracle.

Если ваш web-сервер не стартует или заваливается при старте: убедитесь, что Apache связан с библиотекой pthread:

LXIX. Функции Unified ODBC

Помимо нормальной поддержки ODBC, унифицированные функции ODBC в PHP дают доступ к различным БД, который заимствуют семантику ODBC API для реализации своего собственного API. Вместо работы с несколькими драйверами БД, которые почти идентичны, эти драйверы были объединены в отдельный набор ODBC-функций.

Примечание: ODBC при соединении с вышеуказанными БД отсутствует. Функции, которые вы используете, просто совместно используют те же имена и синтаксис, что и ODBC-функции. Исключением является iODBC. Построение PHP с поддержкой iODBC даёт вам возможность использовать любые ODBC-совместимые драйверы с вашими PHP-приложениями. iODBC обслуживается OpenLink Software. Дополнительная информация о iODBC, а также HOWTO, находятся на www.iodbc.org


Требования

Следующие БД поддерживаются функциями Unified ODBC: Adabas D, IBM DB2, iODBC, Solid и Sybase SQL Anywhere. Для доступа к этим БД у вас должны быть установлены необходимые библиотеки.


Установка

См. главу Установка на Unix-системах о конфигурировании PHP с этими БД.


Конфигурация

На поведение ODBC-функций влияют установки в глобальном файле конфигурации php.ini.

Таблица 1. Опции конфигурации Unified ODBC
ИмяПо умолчанию Изменяемаяodbc.default_db *NULLPHP_INI_ALLodbc.default_user * NULLPHP_INI_ALLodbc.default_pw *NULLPHP_INI_ALL odbc.allow_persistent"1"PHP_INI_SYSTEModbc.check_persistent "1"PHP_INI_SYSTEModbc.max_persistent"-1"PHP_INI_SYSTEM odbc.max_links"-1"PHP_INI_SYSTEModbc.defaultlrl"4096" PHP_INI_ALLodbc.defaultbinmode"1"PHP_INI_ALL

Примечание: вхождения, помеченные *, ещё не реализованы.

Детали и определения констант PHP_INI_* см. в ini_set().

Далее дано краткое описание директив конфигурации.

odbc.default_db string

ODBC-источник данных, если не специфицирован в odbc_connect() или в odbc_pconnect().

odbc.default_user string

Имя пользователя, если не специфицировано в odbc_connect() или в odbc_pconnect().

odbc.default_pw string

Пароль, если не специфицирован в odbc_connect() или в odbc_pconnect().

odbc.allow_persistent boolean

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

odbc.check_persistent boolean

Проверяет, что соединение действует, перед повторным использованием.

odbc.max_persistent integer

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

odbc.max_links integer

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

odbc.defaultlrl integer

Обработка полей LONG. Специфицирует количество байт, возвращаемых переменными.

odbc.defaultbinmode integer

Обработка двоичных данных.


Типы ресурсов

Это расширение не определяет никакие типы ресурсов.


Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
odbc_autocommit - включает/отключает autocommit
odbc_binmode - обработка бинарных данных столбцов
odbc_close_all - закрывает все ODBC-сеодинения
odbc_close - закрывает ODBC-соединение
odbc_columnprivileges - возвращает result-идентификатор, который может использоваться для извлечения списка столбцов и ассоциированных привилегий
odbc_columns - список имён столбцов в специфицированных таблицах. Возвращает результирующий идентификатор, содержащий эту информацию
odbc_commit - подтверждает ODBC-транзакцию
odbc_connect - соединяет с источником данных/datasource
odbc_cursor - получает cursorname
odbc_do - синоним odbc_exec()
odbc_error - получает код последней ошибки
odbc_errormsg - получает последнее сообщение об ошибке
odbc_exec - подготавливает и выполняет SQL-оператор
odbc_execute - выполняет подготовленный оператор
odbc_fetch_array - извлекает результирующий ряд как ассоциативный массив
odbc_fetch_into - извлекает один результирующий ряд в массив
odbc_fetch_object - извлекает результирующий ряд как объект
odbc_fetch_row - извлекает ряд
odbc_field_len - получает длину (точность) поля
odbc_field_name - получает columnname
odbc_field_num - возвращает номер столбца
odbc_field_precision - синоним odbc_field_len()
odbc_field_scale - получает масштаб поля
odbc_field_type - Datatype поля
odbc_foreignkeys - возвращает список foreign-ключей в специфицированной таблице или список foreign-ключей в других таблицах, которые ссылаются на primary key в специфицированной таблице
odbc_free_result - освобождает ресурсы, ассоциированные с результатом
odbc_gettypeinfo - возвращает result-идентификатор, содержащий информацию о типах данных, поддерживаемых этим источником данных
odbc_longreadlen - обработка LONG-столбцов
odbc_next_result - проверяет, допустимы ли множественные результаты
odbc_num_fields - количество столбцов в результате
odbc_num_rows - количество рядов в результате
odbc_pconnect - открывает постоянное соединение с БД
odbc_prepare - готовит оператор для выполнения
odbc_primarykeys - возвращает result-идентификатор, который может быть использован для извлечения имён столбцов, образующих primary key/первичный ключ таблицы
odbc_procedurecolumns - запрашивает информацию о параметрах процедур
odbc_procedures - получает список процедур, хранимых в специфицированном источнике данных. Возвращает result-идентификатор, содержащий эту информацию
odbc_result_all - печатает результат как HTML-таблицу
odbc_result - получает результирующие данные
odbc_rollback - откатывает транзакцию
odbc_setoption - настраивает ODBC-установки. Возвращает FALSE, если возникает ошибка, иначе TRUE
odbc_specialcolumns - возвращает оптимальный набор столбцов, уникально идентифицирующий ряд таблицы, или столбцы, которые автоматически обновляются, когда транзакция обновляет любое значение в ряду
odbc_statistics - запрашивает статистику таблицы
odbc_tableprivileges - список таблиц и привилегий, ассоциированных с каждой таблицей
odbc_tables - получает имён таблиц, хранимых в специфическом источнике данных. Возвращает result-идентификатор, содержащий эту информацию

LXXI. Функции OpenSSL

Предупреждение!Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.


Введение

Этот модуль использует функции OpenSSL для генерации и проверки подписи и пломбирования (шифровки) и открытия (дешифровки) данных. PHP-4.0.4pl1 требует OpenSSL >= 0.9.6, но PHP-4.0.5 и выше также будет работать и с OpenSSL >= 0.9.5.

Примечание: пожалуйста, помните, что это расширение всё ещё является экспериментальным!

OpenSSL предлагает много возможностей, которые в данный момент не поддерживаются этим модулем. Некоторые могут быть добавлены в будущем.


Параметры Key/Certificate

Немногие из этих openssl-функций требуют параметра key или certificate. PHP 4.0.5 и ранее должен использовать ресурсы key или certificate, возвращённые одной из функций openssl_get_xxx. Последующие версии могут использовать один из следующих методов:

Сертификаты

    Ресурс X.509, возвращаемый из openssl_x509_read

    Строка, имеющая форматfile://path/to/cert.pem; именованный файл обязан содержать PEM-кодированный сертификат

    Строка, с содержимым сертификата, PEM-кодированная

Public/Private Ключи

    Ресурс ключа, возвращаемый из openssl_get_publickey() или openssl_get_privatekey()

    Только для public-ключей: X.509-ресурс

    Строка, имеющая формат file://path/to/file.pem - именованный файл обязан содержать PEM-кодированный certificate/private key (может содержать оба)

    Строка, содержащая certificate/key, PEM-кодированная

    Для private keys вы можете также использовать синтаксис array($key, $passphrase), где $key представляет ключ, специфицированный с использованием file:// , или текстуальную нотацию содержимого, а $passphrase представляет строку, содержащую passphrase для этого private key


Проверка сертификата

При вызове функции, которая будет проверять подпись/сертификат, параметр cainfo является массивом, содержащим имена файла и директории, специфицирующих размещение доверенных CA-файлов. Если директория специфицирована, то это должна быть правильно сформированная хэшированная директория, которая будет использоваться командой openssl.


PKCS7 Флаги/Константы

Функции S/MIME используют флаги, специфицированные битовым полем, которое может содержать одно или более следующих значений:

Таблица 1. PKCS7-константы
КонстантаОписание PKCS7_TEXTдобавляет text/plain content type шапки/header'ы в шифрованное/подписанное сообщение. При дешифровке или проверке эти шапки вырезаются из вывода - если дешифрованное или проверенное сообщение не имеет тип type text/plain, возникает ошибка.PKCS7_BINARYнормально вводное сообщение конвертируется в "канонический" формат, который использует CR и LF как символ конца строки: как требует спецификация S/MIME. Если эти опции имеются, трансляция не происходит. Это можно использовать при обработке бинарных данных, которые могут не иметь MIME-формат. PKCS7_NOINTERNпри проверке сообщения сертификаты (если имеются), включённые в сообщение, проверяются на наличие подписанного сертификата. С этой опцией используются только сертификаты, специфицированные в параметре extracerts функции openssl_pkcs7_verify(). Предоставляемые сертификаты могут по-прежнему использоваться как недоверенные/untrusted CA. PKCS7_NOVERIFYне проверять сертификат подписчика подписанного сообщения. PKCS7_NOCHAINне связывать проверку сертификатов подписчиков: то есть не использовать сертификаты в подписанном сообщении как недоверенные/untrusted CA.PKCS7_NOCERTS при подписывании сообщения сертификат подписывающего обычно включается - с данной опцией он исключается. Это уменьшает размер подписанного сообщения, но проверяющий обязан иметь локально копию сертификата подписывающего (передаваемую с использованием extracerts в openssl_pkcs7_verify(), например. PKCS7_NOATTRнормально, когда сообщение подписывается, включается набор атрибутов, которые содержат время подписи и поддерживаемые симметричные алгоритмы. С данной опцией они не включаются. PKCS7_DETACHEDпри подписывании сообщения используйте cleartext-подписывание с MIME-типом multipart/signed. Это значение по умолчанию, если это параметр flags для openssl_pkcs7_sign(), если вы не специфицируете никаких флагов. Если вы отключите эту опцию, сообщение будет подписано с использованием непрозрачной/opaque подписи, которая более устойчива к почтовой трансляции, но не может читаться почтовыми агентами, не поддерживающими S/MIME.PKCS7_NOSIGSне проверять подписи в сообщении

Примечание: эти константы были введены в версии 4.0.6.

Содержание
openssl_csr_export_to_file - экспортирует CSR в файл или переменную
openssl_csr_export - экспортирует CSR в файл или переменную
openssl_csr_new - генерирует privkey и CSR
openssl_csr_sign - подписывает cert другим CERT
openssl_error_string - возвращает сообщение об ошибке openSSL
openssl_free_key - освобождает key-ресурс
openssl_get_privatekey - подготавливает PEM-форматированный private key для использования
openssl_get_publickey - извлекает public key из сертификата и подготавливает его для использования
openssl_open - открывает пломбированные данные
openssl_pkcs7_decrypt - дешифрует шифрованное S/MIME-сообшение
openssl_pkcs7_encrypt - шифрует S/MIME-сообщение
openssl_pkcs7_sign - подписывает S/MIME-сообщение
openssl_pkcs7_verify - проверяет подпись подписанного S/MIME-сообщения
openssl_pkey_export_to_file - получает экспортабельное представление ключа в файле
openssl_pkey_export - получает экспортабельное представление ключа в строке или файле
openssl_pkey_new - генерирует новый private key
openssl_private_decrypt - дешифрует данные с private key
openssl_private_encrypt - шифрует данные с private key
openssl_public_decrypt - дешифрует данные с public key
openssl_public_encrypt - шифрует данные с public key
openssl_seal - пломбирует (шифрует) данные
openssl_sign - генерирует подпись
openssl_verify - проверяет подпись
openssl_x509_check_private_key - проверяет, соответствует ли private сертификату CERT
openssl_x509_checkpurpose - проверяет, может ли сертификат использоваться для определённых целей
openssl_x509_export_to_file - экспортирует CERT в файл или переменную
openssl_x509_export - экспортирует CERT в файл или переменную
openssl_x509_free - освобождает ресурс сертификата
openssl_x509_parse - разбирает X509-сертификат и возвращает the информацию как массив
openssl_x509_read - разбирает X509-сертификат и возвращает идентификатор ресурса для него

LXXII. Функции Oracle

Содержание
Ora_Bind - связывает PHP-переменную с параметром Oracle
Ora_Close - закрывает курсор Oracle
Ora_ColumnName - получает имя результирующего столбца Oracle
Ora_ColumnSize - получает размер результирующего столбца Oracle
Ora_ColumnType - получает тип результирующего столбца Oracle
Ora_Commit - подтверждает/commit транзакцию Oracle
Ora_CommitOff - отключает автоматическое подтверждение
Ora_CommitOn - включает автоматическое подтверждение
Ora_Do - разобрать, выполнить, извлечь
Ora_Error - получает сообщение об ошибке Oracle
Ora_ErrorCode - получает код ошибки Oracle
Ora_Exec - выполняет разобранный оператор в курсоре Oracle
Ora_Fetch_Into - извлекает ряд в специфицированный результирующий массив
Ora_Fetch - извлекает ряд данных из курсора
Ora_GetColumn - извлекает данные из извлечённого столбца
Ora_Logoff - закрывает соединение с Oracle
Ora_Logon - открывает соединение с Oracle
Ora_Numcols - возвращает количество столбцов
Ora_Numrows - возвращает количество рядов
Ora_Open - открывает курсор Oracle
Ora_Parse - разбирает оператор SQL
Ora_pLogon - открывает постоянное соединение с Oracle
Ora_Rollback - откатывает транзакцию

LXXIV. Функции управления выводом

Функции управления выводом позволяют определять, когда вывод будет отправлен из скрипта. Это можно использовать в различных ситуациях, особенно если вам нужно выслать шапки/headers браузеру, после того как ваш скрипт начал выводить данные. Функции управления выводом не влияют на шапки, высылаемые функциями header() или setcookie(), только на такие функции, как echo(), и на данные между блоками PHP-кода.

LXXIII. Функции Ovrimos SQL

Ovrimos SQL Server это клиент/серверный транзакционный RDBMS в сочетании с Web-возможностями и быстрыми транзакциями.

Ovrimos SQL Server доступен с www.ovrimos.com. Чтобы включить поддержку в PHP, просто скомпилируйте php с параметром '--with-ovrimos' в скрипте configure. Вам необходимо установить библиотеку sqlcli, имеющуюся в дистрибутиве Ovrimos SQL Server.

LXXXI. Функции управления процессом

Поддержка функций управления процессом в РНР реализует создание процесса в стиле Unix, выполнение программы, обработку сигналов и окончание процесса. Управление процессом не должно включаться в окружении web-сервера, и могут быть неожиданные результаты, если функции управления процессом будут выполняться внутри среды web-сервера.

Эта документация призвана разъяснить общие принципы использования каждой из функций управления процессом. Детальную информацию об управлении процессом в Unix мы рекомендуем вам найти в вашей системной документации, включая fork(2), waitpid(2) и signal(2), или в исчерпывающем справочнике, таком как Advanced Programming in the UNIX Environment, автор W. Richard Stevens (Addison-Wesley).

Поддержка управления процессом в PHP по умолчанию не включена. Вам необходимо использовать опцию конфигурации --enable-pcntl при компилировании PHP, чтобы включить эту поддержку.

Примечание: в настоящее время этот модуль не работает на не-Unix платформах (Windows).

Следующий список сигналов поддерживается функциями управления процессом. См. man-страницу signal(7) вашей системной документации о поведении по умолчанию этих сигналов.

Таблица 1. Поддерживаемые сигналы
SIGFPESIGCONT SIGKILLSIGSTOPSIGUSR1SIGTSTP SIGHUPSIGUSR2SIGTTINSIGINT SIGSEGVSIGTTOUSIGQUITSIGPIPE SIGURGSIGILLSIGALRMSIGXCPU SIGTRAPSIGTERMSIGXFSZSIGABRT SIGSTKFLTSIGVTALRMSIGIOTSIGCHLD SIGPROFSIGBUSSIGCLDSIGWINCH SIGPOLLSIGIOSIGPWRSIGSYS   

Пример управления процессом

Этот пример разветвляет процесс демона/daemon с обработчиком сигнала.

LXXXVII. Функции регулярных выражений
(Perl-совместимые)

Синтаксис патэрнов, используемый в этих функциях, очень напоминает Perl. Выражение должно быть заключено в ограничители, слэши (/), например. В качестве ограничителей могут использоваться любые символы, кроме не алфавитных символов, цифр и обратного слэша (\). Если символ ограничителя должен использоваться в самом выражении, он должен мнемонизироваться/escape обратным слэшем. Начиная с PHP 4.0.4, вы можете также использовать парные ограничители в стиле Perl: (), {}, [] и <>.

После конечного ограничителя могут идти различные модификаторы, влияющие на подстановку. См. Модификаторы патэрна.

PHP также поддерживает регулярные выражения, использующие расширенный синтаксис POSIX с функциями POSIX-extended regex.


Требования

Поддержка регулярных выражений предоставляется пакетом библиотеки PCRE, который является открытым ресурсом, автор Philip Hazel, и copyright University of Cambridge, England. Он находится на ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/


Установка

Начиная с PHP 4.2.0, эти функции по умолчанию включены. В более старых версиях вы должны конфигурировать и компилировать PHP с опцией --with-pcre-regex[=DIR], чтобы использовать эти функции. Вы можете отменить функции pcre опцией --without-pcre-regex.


Конфигурация

Это расширение не определяет никаких директив конфигурации.


Типы ресурсов

Это расширение не определяет никакие типы ресурсов.


Предопределённые константы

Таблица 1. PREG-константы
константаописание PREG_PATTERN_ORDERОформляет результат таким образом, что $matches[0] является массивом совпадений всего патэрна, $matches[1] это массив строк, совпавших с первым субпатэрном в кавычках, и так далее. Этот флаг используется только с preg_match_all().PREG_SET_ORDER Оформляет результат таким образом, что $matches[0] это массив первого набора совпадений, $matches[1] это массив второго набора совпадений, и так далее. Этот флаг используется только с preg_match_all(). PREG_OFFSET_CAPTUREСм. описание PREG_SPLIT_OFFSET_CAPTURE. Этот флаг доступен, начиная с PHP 4.3.0.PREG_SPLIT_NO_EMPTY Этот флаг говорит функции preg_split() - возвращать только непустые участки. PREG_SPLIT_DELIM_CAPTUREЭтот флаг говорит функции preg_split() - захватывать выражение в скобках также в патэрне ограничителе. Этот флаг доступен, начиная с PHP 4.0.5. PREG_SPLIT_OFFSET_CAPTUREЕсли этот флаг установлен, для каждого возникающего совпадения будет возвращаться также смещение прибавляемой строки. Обратите внимание, что это изменяет return-значение в массиве, где элемент является массивом, состоящим из совпавшей строки со смещением 0  и смещения его строки в субъекте со смещением 1. Этот флаг доступен, начиная с PHP 4.3.0, и используется только для preg_split().

Примеры

LXXVI. Функции PDF


Введение

Функции PDF в PHP могут создавать PDF-файлы с использованием библиотеки PDFlib, автор Thomas Merz. PDFlib доступна для загрузки на http://www.pdflib.com/pdflib/index.html, но требует приобретения лицензии для коммерческого использования. Библиотеки JPEG и TIFF необходимы для компилирования этого приложения. См. в разделе Инсталяция PDFlib о компиляции поддержки PDF в PHP.

Документация этого раздела является обзором функций библиотеки PDFlib и не может считаться исчерпывающим справочником. Консультируйтесь в сопровождающей документации дистрибутива PDFlib. Там содержится полноценный обзор возможностей функций библиотеки PDFlib и самая свежая информация обо всех функциях.

В библиотеке PDFlib и в модуле PHP все функции и параметры имеют идентичные имена. Вам необходимо разобраться в некоторых основных понятиях PDF и PostScript, чтобы эффективно использовать это расширение.
Все размеры и координаты измеряются в пунктах PostScript. Обычно имеется 72 PostScript-пункта на дюйм, но это зависит от разрешающей способности на выводе. См. в PDFlib-документации, включённой в дистрибутив PDFlib, объяснение используемой системы координат.

Обратите внимание, что  большинство функций PDF требуют pdf object в качестве первого параметра. См. примеры далее.

Примечание: имеется альтернативный модуль PHP для создания PDF-документов на базе FastIO's ClibPDF. См. раздел ClibPDF. Обратите внимание, что ClibPDF имеет несколько иной API по сравнению с PDFlib.


Конфликты со старыми версиями PDFlib

Начиная с PHP 4.0.5, PHP-расширение для PDFlib официально поддерживается компанией PDFlib GmbH. Это означает, что все функции, описанные в учебнике PDFlib (V3.00 или выше), поддерживаются в PHP 4  с точно теми же значениями и параметрами. Только return-значения могут отличаться от учебника PDFlib, так как используется соглашение PHP по возвращению FALSE. Из соображений совместимости эта привязка к PDFlib всё ещё поддерживает старые функции, но они должны быть заменены их новыми версиями. PDFlib GmbH не будет рассматривать проблемы, возникающие при использовании этих старых функций.

Таблица 1. Не рекомендуемые функции и их замены
Старая функцияЗаменаpdf_put_image() Больше не нужна.pdf_execute_image()Больше не нужна. pdf_get_annotation()pdf_get_bookmark() с использованием тех же параметров. pdf_get_font() pdf_get_value() с передачей "font" в качестве второго параметра. pdf_get_fontsize() pdf_get_value() с передачей "fontsize" в качестве второго параметра.pdf_get_fontname() pdf_get_parameter() с передачей "fontname" в качестве второго параметра. pdf_set_info_creator() pdf_set_info() с передачей "Creator" в качестве второго параметра. pdf_set_info_title() pdf_set_info() с передачей "Title" в качестве второго параметра. pdf_set_info_subject() pdf_set_info() с передачей "Subject" в качестве второго параметра. pdf_set_info_author() pdf_set_info() с передачей "Author" в качестве второго параметра. pdf_set_info_keywords() pdf_set_info() с передачей "Keywords" в качестве второго параметра. pdf_set_leading() pdf_set_value() с передачей "leading" в качестве второго параметра. pdf_set_text_rendering() pdf_set_value() с передачей "textrendering" в качестве второго параметра. pdf_set_text_rise() pdf_set_value() с передачей "textrise" в качестве второго параметра. pdf_set_horiz_scaling() pdf_set_value() с передачей "horizscaling" в качестве второго параметра. pdf_set_text_matrix()Больше не доступна. pdf_set_char_spacing() pdf_set_value() с передачей "charspacing" в качестве второго параметра. pdf_set_word_spacing() pdf_set_value() с передачей "wordspacing" в качестве второго параметра. pdf_set_transition()pdf_set_parameter() с передачей "transition" в качестве второго параметра.pdf_open() pdf_new() плюс последующий вызов pdf_open_file()pdf_set_font() pdf_findfont() плюс последующий вызов pdf_setfont()pdf_set_duration() pdf_set_value() с передачей "duration" в качестве второго параметра. pdf_open_gif() pdf_open_image_file() с передачей "gif" в качестве второго параметра.pdf_open_jpeg() pdf_open_image_file() с передачей "jpeg" в качестве второго параметра.pdf_open_tiff() pdf_open_image_file() с передачей "tiff" в качестве второго параметра. pdf_open_png() pdf_open_image_file() с передачей "png" в качестве второго параметра. pdf_get_image_width() pdf_get_value() с передачей "imagewidth" в качестве второго параметра и изображения в качестве третьего параметра. pdf_get_image_height() pdf_get_value() с передачей "imageheight" в качестве второго параметра и изображения в качестве третьего параметра.

Подсказки по установке PDFlib 3.x

При использовании версии 3.x библиотеки PDFlib вы должны сконфигурировать PDFlib с опцией
--enable-shared-pdflib
.


Вопросы по старым версиям PDFlib

Любые версии PHP 4 после 9 марта 2000 не поддерживают версии PDFlib, ранее 3.0.

PDFlib 3.0 или выше поддерживается в PHP 3.0.19 и позднее.


Примеры

Большинство функций довольно легко использовать. Самое трудное это, пожалуй, создание очень простого PDF-документа. Следующий пример должен помочь начать. Он создаёт test.pdf из одной страницы. Эта страница содержит текст "Times Roman outlined" шрифтом outlined 30pt. Текст также подчёркнут.

LXXVII. Функции Verisign Payflow Pro

Это расширение позволяет работать с кредитными картами и другими финансовыми транзакциями с использованием службы Verisign Payment Services, ранее известной как Signio (http://www.verisign.com/products/payflow/pro/index.html).

Эти функции доступны, если РНР скомпилирован с опцией --with-pfpro[=DIR]. Вам потребуется SDK, соответствующий вашей платформе, который можно загрузить по интерфейсу менеджера, после того как вы зарегистрируетесь. Если вы будете использовать это расширение с включённым SSL на web-сервере или с другими SSL-компонентами (такими как расширение CURL+SSL), вы ОБЯЗАНЫ получить beta SDK.

После загрузки SDK вы должны скопировать файлы из директории lib дистрибутива. Скопируйте header-файл pfpro.h в /usr/local/include, файл библиотеки libpfpro.so в /usr/local/lib.

При использовании этих функций вы можете опускать вызовы функций pfpro_init() и pfpro_cleanup(), так как расширение делает это автоматически по мере необходимости. Тем не менее, эти функции доступны, если вы работаете с несколькими транзакциями и вам необходим точный контроль над библиотекой. Вы можете выполнять несколько транзакций с помощью pfpro_process() между ними.

Эти функции были введены в PHP 4.0.2.

Примечание: эти функции предоставляют только ссылку на Verisign Payment Services. Прочтите в руководстве Payflow Pro Developers Guide детальную информацию о требуемых параметрах.

Содержание
pfpro_cleanup - выключает библиотеку Payflow Pro
pfpro_init - инициализирует библиотеку Payflow Pro
pfpro_process_raw - обрабатывает "сырую" транзакцию с помощью Payflow Pro
pfpro_process - обрабатывает транзакцию с помощью Payflow Pro
pfpro_version - возвращает версию программы Payflow Pro

LXXX. Функции PostgreSQL

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, но они могут быть удалены в будущем.

Таблица 1. Изменения имён функций
Старое имяНовое имя pg_exec()pg_query() pg_getlastoid()pg_last_oid() pg_cmdtuples()pg_affected_rows() pg_numrows()pg_num_rows() pg_numfields()pg_num_fields() pg_fieldname()pg_field_name() pg_fieldsize()pg_field_size() pg_fieldnum()pg_field_num() pg_fieldprtlen()pg_field_prtlen() pg_fieldisnull()pg_field_is_null() pg_freeresult()pg_free_result() pg_result()pg_fetch_result() pg_loreadall()pg_lo_read_all() pg_locreate()pg_lo_create() pg_lounlink()pg_lo_unlink() pg_loopen()pg_lo_open() pg_loclose()pg_lo_close() pg_loread()pg_lo_read() pg_lowrite()pg_lo_write() pg_loimport()pg_lo_import() pg_loexport()pg_lo_export()

Старый синтаксис pg_connect()/ pg_pconnect() будет не рекомендован, с целью поддержки в будущем асинхронных соединений. Пожалуйста, используйте строку соединения для pg_connect() и pg_pconnect().

Не все функции поддерживаются во всех построениях/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
PostmasterPHPСтатус postmaster &pg_connect("dbname=MyDbName"); OKpostmaster -i &pg_connect("dbname=MyDbName"); OKpostmaster &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() для проверки того, какие переменные окружения доступны текущему процессу.

LXXIX. Функции POSIX

Этот модель содержит интерфейс к функциям, определённым в документации стандартов IEEE 1003.1 (POSIX.1), доступ к которым не может быть получен иным способом. POSIX.1, например, также определял функции open(), read(), write() и close(), которые традиционно были частью PHP 3 продолжительное время. Некоторые системно специфичные функции до этого не были доступны, и этот модуль делает попытку исправить это, давая простой доступ к данным функциям.

Предупреждение!Чувствительные данные могут быть запрошены функциями POSIX ,например, posix_getpwnam() и компанией. Никакие POSIX-функции не выполняют проверку доступа, если safe mode включён. Поэтому настоятельно советуем вообще отключать расширение POSIX (используйте --disable-posix в вашем файле конфигурации), если вы работаете в таком окружении.

Примечание: расширение POSIX недоступно для платформы Windows.

Содержание
posix_ctermid - получает имя пути управляющего терминала
posix_getcwd - имя пути текущей директории
posix_getegid - возвращает эффективный групповой ID текущего процесса
posix_geteuid - возвращает эффективный user ID текущего процесса
posix_getgid - возвращает реальный group ID текущего процесса
posix_getgrgid - возвращает info о группе по group id
posix_getgrnam - возвращает info о группе по имени
posix_getgroups - возвращает набор групп текущего процесса
posix_getlogin - возвращает login-имя
posix_getpgid - получает group id процесса для управления работой
posix_getpgrp - возвращает групповой идентификатор текущего процесса
posix_getpid - возвращает идентификатор текущего процесса
posix_getppid - возвращает идентификатор родительского процесса
posix_getpwnam - возвращает info о пользователе по username
posix_getpwuid - возвращает info о пользователе по user id
posix_getrlimit - возвращает info об ограничениях системных ресурсов
posix_getsid - получает текущий sid процесса
posix_getuid - возвращает real user ID текущего процесса
posix_isatty - определяет, находится ли дескриптор файла в интерактивном терминале
posix_kill - посылает сигнал процессу
posix_mkfifo - создаёт fifo специальный файл (именованный канал)
posix_setegid - устанавливает эффективный GID текущего процесса
posix_seteuid - устанавливает эффективный UID текущего процесса
posix_setgid - устанавливает GID текущего процесса
posix_setpgid - устанавливает group id процесса для управления работой
posix_устанавливаетid - делает текущий процесс лидером сессии
posix_setuid - устанавливает the UID текущего процесса
posix_times - получает process times
posix_ttyname - определяет имя устройства терминала
posix_uname - получает системное имя

LXXXIII. Функции принтера

Эти функции доступны только под Windows 9.x, ME, NT4 и 2000. Они были добавлены в PHP 4 (4.0.4).

Содержание
printer_abort - удаляет файл спула принтера
printer_close - закрывает открытое соединение с принтером
printer_create_brush - создаёт новую кисть
printer_create_dc - создаёт новый контекст устройства
printer_create_font - создаёт новый шрифт
printer_create_pen - создаёт новый карандаш/pen
printer_delete_brush - удаляет кисть
printer_delete_dc - удаляет контекст устройства
printer_delete_font - удаляет шрифт
printer_delete_pen - удаляет карандаш
printer_draw_bmp - прорисовывает bmp
printer_draw_chord - прорисовывает хорду
printer_draw_elipse - прорисовывает эллипс
printer_draw_line - прорисовывает линию
printer_draw_pie - прорисовывает pie
printer_draw_rectangle - прорисовывает прямоугольник
printer_draw_roundrect - прорисовывает прямоугольник с закруглёнными углами
printer_draw_text - прорисовывает текст
printer_end_doc - закрывает документ
printer_end_page - закрывает активную страницу
printer_get_option - запрашивает данные конфигурации принтера
printer_list - возвращает массив принтеров, присоединённых к серверу
printer_logical_fontheight - получает логическую высоту шрифта
printer_open - открывает соединение с принтером
printer_select_brush - выбирает кисть
printer_select_font - выбирает шрифт
printer_select_pen - выбирает карандаш
printer_set_option - конфигурирует соединение с принтером
printer_start_doc - начинает новый документ
printer_start_page - начинает новую страницу
printer_write - записывает данные в принтер

LXXXIV. Функции Pspell

Эти функции позволяют проверять правописание слова и предлагают варианты исправления.

Вам понадобятся библиотеки aspell и pspell, доступные с http://aspell.sourceforge.net/ и с http://aspell.net/, соответственно, и опция --with-pspell[=dir] при компилировании РНР.

Содержание
pspell_add_to_personal - добавляет слово в персональный список слов
pspell_add_to_session - добавляет слово в персональный список слов в текущей сессии
pspell_check - проверяет слово
pspell_clear_session - очищает текущую сессию
pspell_config_create - создаёт конфигурацию, используемую для открытия словаря
pspell_config_ignore - игнорирует слова менее N символов длиной
pspell_config_mode - изменяет номер режима возвращаемого варианта исправления
pspell_config_personal - устанавливает файл, содержащий персональный список слов
pspell_config_repl - устанавливает файл, содержащий замещающие пары
pspell_config_runtogether - предусматривает идущие вместе слова как верные сочетания
pspell_config_save_repl - определяет, сохранять ли список замещающих пар вместе со списком слов
pspell_new_config - загружает новый словарь с установками на базе данной config
pspell_new_personal - загружает новый словарь с персональным списком слов
pspell_new - загружает новый словарь
pspell_save_wordlist - сохраняет персональный список слов в файле
pspell_store_replacement - хранит замещающую пару для слова
pspell_suggest - предлагает исправления слова

LXXXVIII. Функции qtdom

Содержание
qdom_error - возвращает строку ошибки из последней операции QDOM или FALSE, если ошибок не было
qdom_tree - создаёт дерево xml-строки

LXXXV. Функции GNU Readline

Функции readline() реализуют интерфейс с библиотекой GNU Readline. Это функции, предоставляющие редактируемые командные строки. Пример Bash позволяет использовать кнопки со стрелками для вставки символов или прокручивать историю команд. Из-за интерактивной природы этой библиотеки она мало используется при создании Web-приложений, но может пригодиться при написании скриптов, предназначаемых для запуска из оболочки/shell.


Требования

Для использования readline-функций вам необходимо установить libreadline и скомпилировать PHP с поддержкой readline.


Установка

Для компиляции PHP с поддержкой readline вам нужно сконфигурировать PHP --with-readline после установки libreadline. Вы можете найти libreadline на домашней странице проекта GNU Readline по адресу http://cnswww.cns.cwru.edu/~chet/readline/rltop.html. Его обсуживает Chet Ramey, являющийся также автором Bash.


Конфигурация

Это расширение не определяет никаких директив конфигурации.


Типы ресурсов

Это расширение не определяет никакие типы ресурсов.


Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
readline_add_history - добавляет строку в историю
readline_clear_history - очищает историю
readline_completion_function - регистрирует функцию завершения
readline_info - получает/устанавливает различные внутренние переменные readline
readline_list_history - список истории
readline_read_history - читает историю
readline_write_history - записывает в историю
readline - читает строчку

LXXXVI. Функции GNU Recode

Этот модуль содержит интерфейс с библиотекой GNU Recode версии 3.5. Для использования функций этого модуля вы обязаны скомпилировать интерпретатор PHP с опцией --with-recode. Для этого GNU Recode 3.5 или новее обязана быть установлена в вашей системе.

Библиотека GNU Recode конвертирует файлы между различными наборами символов и кодировками. Если это не может быть выполнено точно, неподходящие символы могут быть отброшены, либо будут выполнены с приближением. Эта библиотека распознаёт или воспроизводит около 150 различных наборов символов и может конвертировать файлы почти в любом сочетании пар. Поддерживается большая часть наборов символов RFC 1345.

Предупреждение!Проблемы завала и старта PHP могут возникать при загрузке recode как расширения после загрузки расширений mysql или imap. Загрузка recode до этих расширений должна решить проблему. Это следствие технических проблем, поскольку c-клиентская библиотека, используемая imap, и recode имеют собственные функции hash_lookup(), а mysql и recode имеют одинаковые функции hash_insert.
Содержание
recode_file - перекодирует из файла в файл в соответствии с recode-запросом
recode_string - перекодирует строку в соответствии с recode-запросом
recode - перекодирует строку в соответствии с recode-запросом

LXXXIX. Функции регулярных выражений
(POSIX Extended)

Примечание: PHP поддерживает также регулярные выражения в синтаксисе Perl через использование функций PCRE. Эти функции поддерживают нежадное совпадение, утверждения, условные субпатэрны и некоторые другие возможности, не поддерживаемые синтаксисом регулярных выражений POSIX-extended.

Предупреждение!Эти функции регулярных выражений не являются binary-safe. Функции PCRE - являются.

Регулярные выражения используются для сложных манипуляций строками в PHP. Вот функции, поддерживающие регулярные выражения:

ereg()

ereg_replace()

eregi()

eregi_replace()

split()

spliti()

Все эти функции принимают в качестве первого аргумента строку регулярного выражения. PHP использует регулярные выражения расширенного POSIX, как определено POSIX 1003.2. Полное описание регулярных выражений POSIX см. на regex man-страницах, включённых в директорию regex дистрибутива PHP. Это формат manpage, поэтому вам понадобится сделать что-нибудь ещё со строками man /usr/local/src/regex/regex.7, чтобы читать его.

XC. Функции Semaphore, Shared Memory и IPC

Этот модуль предоставляет оболочки для семейства функций System V IPC. Он включает семафоры, shared-память и внутрипроцессные сообщения/inter-process messaging (IPC).

Семафоры могут использоваться для предоставления эксклюзивного доступа к ресурсам на текущей машине или для ограничения количества процессов, которые могут одновременно использовать ресурс.

Этот модуль также предоставляет функции для работы с shared-памятью с использованием совместно используемой памяти System V. Shared-память может использоваться для предоставления доступа к глобальным переменным. Различные httpd-демоны и даже другие программы (такие как Perl, C, ...) могут получать доступ к этим данным, что даёт глобальный обмен данными. Помните, что shared-память НЕ защищена от одновременного доступа. Используйте семафоры для синхронизации.

Таблица 1. Ограничения Shared-памяти в ОС Unix
SHMMAX максимальный размер shared-памяти, нормально 131072 байтSHMMIN минимальный размер shared-памяти, нормально 1 байтSHMMNI максимальное количество сегментов shared-памяти в системе, нормально 100 SHMSEGмаксимальное количество сегментов shared-памяти на процесс, нормально 6

Функции сообщений могут использоваться для отправки и получения сообщений в/из других процессов. Они являются простым и эффективным средством обмена данными между процессами без необходимости без необходимости настройки альтернативного использования сокетов домена unix.

Примечание: эти функции не работаю на системах Windows.

Содержание
ftok - конвертирует pathname и идентификатор проекта в ключ System V IPC
msg_get_queue - создаёт очередь сообщений или присоединяет к ней
msg_receive - получает сообщение из очереди сообщений
msg_remove_queue - разрушает очередь сообщений
msg_send - отправляет сообщение в очередь сообщений
msg_set_queue - устанавливает информацию в структуре данных очереди сообщений
msg_stat_queue - возвращает информацию из структуры данных очереди сообщений
sem_acquire - получает семафор
sem_get - получает id семафора
sem_release - освобождает семафор
sem_remove - удаляет семафор
shm_attach - создаёт или открывает сегмент shared-памяти
shm_detach - отсоединяет от сегмента shared-паямти
shm_get_var - возвращает переменную из shared-памяти
shm_put_var - вставляет или обновляет переменную в shared-памяти
shm_remove_var - удаляет переменную из shared-памяти
shm_remove - удаляет shared-память из Unix-систем

XCI. Функции баз данных SESAM

SESAM/SQL-Server это основа системы БД, разработанной фирмой Fujitsu Siemens Computers, Германия. Она работает на высококлассных серверах с ОС BS2000/OSD.

При установке на BS2000, SESAM/SQL-Server показал ...

лёгкость использования соединений с Java-, Web- и клиент/серверных;

способность работать с доступностью более 99.99%;

способность обслуживать тысячи и даже сотни тысяч пользователей.

Теперь имеется интерфейс PHP3-SESAM, позволяющий выполнять операции с БД в PHP-скриптах.

Замечания по конфигурации: отсутствует отдельная поддержка интерфейса PHP-SESAM, он работает только как часть интегрированного Apache-модуля. В РНР-модуле Apache этот SESAM-интерфейс конфигурируется директивами Apache.

Таблица 1. Директивы конфигурирования SESAM
ДирективаЗначениеphp3_sesam_oml Имя BS2000 PLAM-библиотеки, содержащей загружаемые модули драйверов SESAM. Необходима для использования SESAM-функций.

Пример:

XCII. Функции обслуживания сессий

Поддержка сессий в PHP это способ сохранения определённых данных в течение последовательно выполняемых доступов. Это даёт возможность создать более специализированные приложения и увеличить привлекательность вашего web-сайта.

Если вы знакомы с обслуживанием сессий с помощью PHPLIB, вы заметите, что некоторые вопросы аналогичны поддержке сессий в PHP.

Посетителю вашего сайта присваивается уникальный id, так называемый session id. Он хранится в куке на стороне пользователя или вводится в URL.

Поддержка работы с сессиями даёт вам возможность регистрировать произвольное количество переменных и сохранять их в промежутках между выполнениями запросов. Когда пользователь заходит на ваш сайт, PHP будет автоматически (если session.auto_start имеет значение 1) или по вашему запросу (явно - через session_start() или неявно - через session_register()) проверять, выслан ли специфический session id вместе с запросом. Если это так, воссоздаётся предшествующее окружение.

Все зарегистрированные переменные сериализуются после окончания запроса. Зарегистрированные undefined-переменные маркируются как не определённые. При последующих запросах они не определяются модулем сессии, если только пользователь не определить их позднее.

Установки конфигурации track_vars и register_globals определяют, как переменные сессии хранятся и восстанавливаются.

Примечание: в 4.0.3 track_vars всегда on.

Примечание: в PHP 4.1.0 $_SESSION доступна как глобальная переменная, совсем как $_POST, $_GET, $_REQUEST и так далее. В отличие от $HTTP_SESSION_VARS, $_SESSION всегда глобальна. Следовательно, global не должно использоваться для $_SESSION.

Если track_vars включена, а register_globals отключена, только члены глобального ассоциативного массива $HTTP_SESSION_VARS могут быть зарегистрированы как переменные сессии. Восстановленные переменные сессии будут доступны только в массиве $HTTP_SESSION_VARS.

XCIII. Функции Shared Memory

Shmop это набор легко используемых функций, позволяющих РНР читать , записывать, создавать и удалять сегменты совместно используемой памяти UNIX shared memory). Функции не будут работать в Windows, так как эти ОС не поддерживают shared-память. Для использования shmop вам нужно скомпилировать РНР с параметром --enable-shmop в строке конфигурации.

Примечание: d PHP 4.0.3 эти функции имели префикс shm вместо shmop.

XCV. Функции SNMP

Чтобы использовать функции SNMP в Unix, вам нужно установить пакет UCD SNMP. Под Windows эти функции доступны только в NT, но не в Win95/98.

Важно: для использования пакета UCD SNMP вам нужно будет также определить NO_ZEROLENGTH_COMMUNITY со значением 1, прежде чем компилировать его. После конфигурирования UCD SNMP, отредактируйте config.h и найдите NO_ZEROLENGTH_COMMUNITY. Раскомментируйте строку #define. Она после этого должна выглядеть так:

#define NO_ZEROLENGTH_COMMUNITY 1

Если вы увидите странные ошибки сегментации в сочетании с командами SNMP, вы не выполнили вышеуказанных инструкций. Если вы не хотите перекомпилировать UCD SNMP, вы можете скомпилировать PHP с ключом --enable-ucd-snmp-hack, который будет работать помимо неправильной конфигурации.

Содержание
snmp_get_quick_print - извлекает текущее значение установки quick_print библиотеки UCD
snmp_set_quick_print - устанавливает значение quick_print в библиотеке UCD SNMP
snmpget - извлекает SNMP-объект
snmprealwalk - возвращает все объекты, включая их соответствующие object id
snmpset - устанавливает SNMP-объект
snmpwalk - извлекает все SNMP-объекты из агента
snmpwalkoid - запрашивает дерево информации о сетевом объекте

XCVI. Функции сокетов

Предупреждение!Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Расширение сокетов реализует низкоуровневый интерфейс функций сообщений через сокеты на основе популярных BSD-сокетов, давая возможность работать и как серверу сокетов, и как клиенту.

Функции сокетов, описанные здесь, являются частью расширения PHP, которое обязано быть подключено на этапе компиляции с помощью опции --enable-sockets option в configure.

О более общем клиентском интерфейсе сокетов см. fsockopen() и pfsockopen().

При использовании этих функций важно помнить, что, хотя многие из них имеют имена, аналогичные их двойникам языка C, они часто имеют разные объявления. Обязательно прочтите описания, чтобы исключить конфликты.

Расширение сокетов было написано с целью предоставить интерфейс для мощных BSD-сокетов. Особое внимание было обращено на то, чтобы эти функции хорошо работали в реализациях как для Win32, так и Unix. Почти все функции сокетов могут потерпеть неудачу при определённых условиях и, следовательно, выдать сообщение E_WARNING с описанием ошибки. Иногда это не происходит по желанию разработчика. Например, функция socket_read() может выдать сообщение E_WARNING, если соединение было внезапно разорвано. Обычно предупреждения подавляются операцией @, а код ошибки отлавливается в приложении функцией socket_last_error(). Вы можете вызвать функцию socket_strerror() с кодом ошибки, чтобы получить строку с описанием этой ошибки. См. дополнительно описания функций.

Примечание: сообщения E_WARNING, сгенерированные расширением сокетов, выводятся на английском, а получаемое сообщение об ошибке будет зависеть от текущих локальных установок (LC_MESSAGES):

XCVII. Строковые функции

Эти функции различными способами работают со строками. Более специализированными являются разделы регулярных выражений и URL.

О поведении строк, особенно в свете употребления одинарных кавычек, двойных кавычек и escape-последовательностей, см. статью Строки в разделе Типы данного учебника.

Ещё более мощные функции обработки строк - функции регулярных выражений POSIX и Perl-совместимые функции регулярных выражений.

Содержание
addcslashes - закавычивает строку слэшами в стиле C
addslashes - закавычивает строку слэшами
bin2hex - конвертирует двоичные данные в 16-ричное представление
chop - псевдоним rtrim()
chr - возвращает специфический символ
chunk_split - делит строку на небольшие отрезки
convert_cyr_string - конвертирует из одного набора символов кириллицы в другой
count_chars - возвращает информацию о символах , используемых с строке
crc32 - вычисляет crc32-полином строки
crypt - однонаправленное шифрование строки (хэширование)
echo - выводит одну или более строк
explode - делит строку строкой
get_html_translation_table - возвращает таблицу трансляции, используемую htmlspecialchars() и htmlentities()
get_meta_tags - извлекает все content-атрбуты meta-тэгов из файла и возвращает массив
hebrev - конвертирует логический Hebrew-текст в визуальный
hebrevc - конвертирует логический Hebrew-текст в визуальный текст с конвертацией newline
htmlentities - конвертирует все символы в HTML-мнемоники
htmlspecialchars - конвертирует специальные символы в HTML-мнемоники
implode - объединяет элементы массива со строкой
join - объединяет элементы массива со строкой
levenshtein - вычисляет Levenshtein-растояние между двумя строками
localeconv - получает информацию о форматировании чисел
ltrim - вырезает пробелы в начале строки
md5_file - вычисляет md5-хэш данного filename
md5 - вычисляет md5-хэш строки
metaphone - вычисляет ключ metaphone строки
nl_langinfo - запрашивает информацию языка и локализации
nl2br - вставляет HTML-разрывы строк перед всеми символами newline в строке
ord - возвращает ASCII-значение символа
parse_str - разбирает строку в переменных
print - выводит строку
printf - выводит отформатированную строку
quoted_printable_decode - конвертирует закавыченную строку для печати в 8-битную строку
quotemeta - закавычивает meta-символы
rtrim - вырезает пробелы в конце строки
setlocale - устанавливает локальную информацию
similar_text - вычисляет сходство между двумя строками
soundex - вычисляет ключ soundex строки
sprintf - возвращает форматированную строку
sscanf - разбирает ввод из строки в соответствии с форматом
str_pad - заполняет строку на на определённую длину другой строкой
str_repeat - повторяет строку
str_replace - заменяет все вхождения строки поиска строкой замещения
str_rot13 - выполняет rot13-трансформацию строки
strcasecmp - бинарно безопасное сравнение строк без учета регистра
strchr - находит первое вхождение символа
strcmp - бинарно безопасное сравнение строк
strcoll - сравнение строк на основе установок локализации
strcspn - находит длину начального сегмента, не совпадающего с маской
strip_tags - вырезает тэги HTML и PHP из строки
stripcslashes - раскавычивает строку, закавыченную функцией addcslashes()
stripslashes - раскавычивает строку, закавыченную функцией addslashes()
stristr - strstr() без учёта регистра
strlen - получает длину строки
strnatcasecmp - сравнение строк без учёта регистра с использованием алгоритма "натурального порядка"
strnatcmp - сравнение строк алгоритмом "натурального порядка"
strncasecmp - бинарно безопасное сравнение первых n символов строки без учёта регистра
strncmp - бинарно безопасное сравнение первых n символов строки
strpos - находит позицию первого появления/вхождения в строке
strrchr - находит последнее появление символа в строке
strrev - разворачивает строку
strrpos - находит позицию последнего появления символа в строке
strspn - находит длину начального сегмента, совпадающего с маской
strstr - находит первое появление строки
strtok - "лексемизирует" строку
strtolower - переводит символы строки в нижний регистр
strtoupper - переводит символы строки в верхний регистр
strtr - транслирует определённые символы
substr_count - подсчитывает количество вхождений подстроки
substr_replace - заменяет текст в части строки
substr - возвращает часть строки
trim - вырезает пробелы в начале и в конце строки
ucfirst - переводит первый символ строки в верхний регистр
ucwords - переводит в верхний регистр первый символ каждого слова строки
vprintf - выводит отформатированную строку
vsprintf - возвращает отформатированную строку
wordwrap - окружает строку заданным количеством символов с использованием символа разрыва строки

XCIV. Функции Shockwave Flash

PHP предлагает возможность создания файлов Shockwave Flash с помощью модуля libswf, автор Paul Haeberli. Вы можете загрузить libswf с ftp://ftp.sgi.com/sgi/graphics/grafica/flash. Если у вас есть libswf, то всё, что вам нужно, это сконфигурировать --with-swf[=DIR], где DIR это местонахождение include и lib-директорий. Директория include должна содержать файл swf.h, а директория lib должна содержать файл libswf.a. Если вы распаковали дистрибутив libswf, эти два файла должны находиться в одной директории. Соответственно, вы должны скопировать их вручную в соответствующие места.

После того как вы успешно установили PHP с поддержкой Shockwave Flash, вы можете создавать Shockwave-файлы из PHP. Вы будете удивлены, но для этого понадобится сделать всего лишь:

XCVIII. Функции Sybase

Содержание
sybase_affected_rows - получает количество рядов, задействованных в последнем запросе
sybase_close - закрывает Sybase-соединение
sybase_connect - открывает соединение с Sybase-сервером
sybase_data_seek - передвигает внутренний указатель ряда
sybase_fetch_array - извлекает ряд как массив
sybase_fetch_field - получает информацию поля
sybase_fetch_object - извлекает ряд как объект
sybase_fetch_row - получает ряд как перечислимый массив
sybase_field_seek - устанавливает смещение поля
sybase_free_result - освобождает результирующую память
sybase_get_last_message - возвращает последнее сообщение сервера
sybase_min_client_severity - устанавливает минимальный уровень серьёзности для клиента
sybase_min_error_severity - устанавливает минимальный уровень серьёзности ошибок
sybase_min_message_severity - устанавливает минимальный уровень серьёзности сообщений
sybase_min_server_severity - устанавливает минимальный уровень серьёзности для сервера
sybase_num_fields - получает количество полей в результате
sybase_num_rows - получает количество рядов в результате
sybase_pconnect - открывает постоянное соединение Sybase
sybase_query - отправляет Sybase query
sybase_result - получает результирующие данные
sybase_select_db - выбирает БД Sybase

XCIX. URL-фунции

Содержание
base64_decode - декодирует данные, кодированные MIME base64
base64_encode - кодирует данные в MIME base64
parse_url - разбирает URL и возвращает его компоненты
rawurldecode - декодирует URL-кодированные строки
rawurlencode - URL-кодирование в соответствии с RFC1738
urldecode - декодирует URL-кодированную строку
urlencode - URL-кодирует строку

C. Функции переменных

О поведении переменных см. статью Переменные в разделе Справочник этого учебника.

Содержание
doubleval - псевдоним floatval()
empty - определяет, установлена ли переменная
floatval - получает float-значение переменной
get_defined_vars - возвращает массив из всех определённых переменных
get_resource_type - возвращает тип ресурса
gettype - получает тип переменной
import_request_variables - импортирует GET/POST/Cookie переменные в глобальную область видимости
intval - получает целочисленное значение переменной
is_array - определяет, является ли переменная массивом
is_bool - определяет, является ли переменная boolean
is_callable - определяет, является ли аргумент правильной вызываемой конструкцией
is_double - псевдоним is_float()
is_float - определяет, является ли переменная числом с плавающей точкой
is_int - определяет, является ли переменная целочисленной
is_integer - псевдоним is_int()
is_long - псевдоним is_int()
is_null - определяет, является ли переменная NULL
is_numeric - определяет, является переменная числом или строкой чисел
is_object - определяет, является ли переменная объектом
is_real - псевдоним is_float()
is_resource - определяет, является ли переменная ресурсом
is_scalar - определяет, является ли переменная скаляром
is_string - определяет, является ли переменная строкой
isset - определяет, установлена ли переменная
print_r - печатает читабельную информацию о переменной
serialize - генерирует сохраняемое представление данного значения
settype - устанавливает тип переменной
strval - получает строковое значение переменной
unserialize - создаёт PHP-значение из хранимого представления
unset - отменяет установку/Unset данной переменной
var_dump - выполняет дамп информации о переменной
var_export - выводит или возвращает строковое представление переменной

CI. Функции vpopmail

Содержание
vpopmail_add_alias_domain_ex - добавляет псевдоним существующему виртуальному домену
vpopmail_add_alias_domain - добавляет псевдоним виртуальному домену
vpopmail_add_domain_ex - добавляет новый виртуальный домен
vpopmail_add_domain - добавляет новый виртуальный домен
vpopmail_add_user - добавляет нового пользователя в специфицированный виртуальный домен
vpopmail_alias_add - вставляет виртуальные псевдонимы
vpopmail_alias_del_domain - удаляет все виртуальные псевдонимы домена
vpopmail_alias_del - удаляет все виртуальные псевдонимы пользователя
vpopmail_alias_get_all - получает все строки псевдонима домена
vpopmail_alias_get - получает все строки псевдонима домена
vpopmail_auth_user - пытается подтвердить username/domain/password. Возвращает true/false
vpopmail_del_domain_ex - удаляет виртуальный домен
vpopmail_del_domain - удаляет виртуальный домен
vpopmail_del_user - удаляет пользователя из виртуального домена
vpopmail_error - получает текстовое сообщение о последней ошибке vpopmail. Возвращает строку
vpopmail_passwd - изменяет пароль виртуального пользователя
vpopmail_set_user_quota - устанавливает квоту виртуального пользователя

CII. Функции W32api

Содержание
w32api_deftype - определяет тип для использования с другими w32api_functions
w32api_init_dtype - создаёт экземпляр типа данных typename и заполняет его значениями val1, val2; затем функция возвращает DYNAPARM, который может быть передан при вызове функции как параметр
w32api_invoke_function - вызывает функцию funcname с аргументами
w32api_register_function - регистрирует в РНР функцию function_name из библиотеки
w32api_set_call_method - устанавливает метод для вызова

CIII. Функции WDDX

Эти функции предназначены для работы с WDDX.

Чтобы использовать WDDX, вам необходимо установить библиотеку expat (которая поставляется с Аpache 1.3.7 или новее) и рекомпилировать PHP с опциями --with-xml и --enable-wddx.

Примечание: если вы хотите сериализовать не-ASCII символы, вы должны предварительное установить соответствующую локализацию (см. setlocale()).

Все функции, сериализующие переменные, используют первый элемент массива для определения того, сериализован ли массив в массив или в структуру. Если первый элемент имеет строковой ключ, то он сериализуется в структуру, иначе - в массив.

CIV. Функции разборщика XML


Введение

Об XML

XML (eXtensible Markup Language) это формат данных для обмена структурированными документами в Web. Это стандарт, созданный консорциумом World Wide Web consortium (W3C). Информация о XML и сопутствующих технологиях находится на сайте http://www.w3.org/XML/


Установка

Это расширение использует библиотеку expat, которую можно найти на http://www.jclark.com/xml/. Makefile, который поставляется вместе с expat, не строит библиотеку по умолчанию. Вы можете использовать такое make-правило:

CV. Функции XMLRPC

Предупреждение!Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Содержание
xmlrpc_decode_request - декодирует XML в типы PHP
xmlrpc_decode - декодирует XML в типы PHP
xmlrpc_encode_request - генерирует XML для запроса метода
xmlrpc_encode - генерирует XML для PHP-значения
xmlrpc_get_type - получает xmlrpc-тип для PHP-значения. В основном используется для base64 и строк datetime
xmlrpc_parse_method_descriptions - декодирует XML в список описаний методов
xmlrpc_server_add_introspection_data - добавляет introspection-документацию
xmlrpc_server_call_method - разбирает XML=запросы и вызывает методы
xmlrpc_server_create - создаёт xmlrpc-сервер
xmlrpc_server_destroy - уничтожает ресурсы сервера
xmlrpc_server_register_introspection_callback - регистрирует РНР-функцию для генерирования документации
xmlrpc_server_register_method - регистрирует РНР-функцию для поиска совпадений метода ресурса с method_name
xmlrpc_set_type - устанавливает xmlrpc-тип, base64 или datetime для строкового значения PHP

CVI. Функции XSLT


Введение

О XSLT и Sablotron

XSLT (Extensible Stylesheet Language (XSL) Transformations) это язык трансформации XML-документов в другие XML-документы. Это стандарт, определённый консорциумом World Wide Web (W3C). Информацию о XSLT и связанных технологиях можно найти на http://www.w3.org/TR/xslt.

Установка

Это расширение использует Sablotron и expat, которые находятся на http://www.gingerall.com/. Имеются как экзешники, так и исходный код.

В UNIX запустите configure с опциями --enable-xslt --with-xslt-sablot. Библиотека Sablotron должна быть установлена там, где ваш компилятор может её найти.

Об этом расширении

Это расширение PHP предоставляет не зависящий от процессора API для трансформаций XSLT. В настоящее время это расширение поддерживает только библиотеку Sablotron от Ginger Alliance. Планируется поддержка и других библиотек, таких как библиотеки Xalan или libxslt.

Примечание: это расширение отличается от расширения sablotron, поставляемого с версиями PHP до PHP 4.1; в настоящее время поддерживается только XSLT-расширение в PHP 4.1. Если вам нужна поддержка более старых расширений, сделайте запрос в список рассылки php-general@lists.php.net

Содержание
xslt_create - создаёт новый XSLT-процессор
xslt_errno - возвращает номер ошибки
xslt_error - возвращает строку ошибки
xslt_free - освобождает XSLT-процессор
xslt_process - выполняет XSLT-трансформацию
xslt_set_base - устанавливает базовый URI для всех XSLT-транформаций
xslt_set_encoding - устанавливает кодировку для разбора XML-документов
xslt_set_error_handler - устанавливает обработчик ошибок для XSLT-процессора
xslt_set_log - устанавливает log-файл для записи log-сообщений
xslt_set_sax_handler - устанавливает SAX-обработчики для XSLT-процессора
xslt_set_sax_handlers - устанавливает SAX-обработчики, вызываемые в ходе обработки XML-документа
xslt_set_scheme_handler - устанавливает Scheme-обработчик для XSLT-процессора
xslt_set_scheme_handlers - устанавливает Scheme-обработчики для XSLT-процессора

CVII. Функции YAZ


Введение

Это расширение предлагает интерфейс PHP с набором утилит YAZ, реализующим протокол Z39.50 для получения информации. С помощью этого расширения вы легко сможете реализовать Z39.50 origin (клиент), который ищет или сканирует Z39.50 targets (серверы) параллельно.

YAZ доступен с http://www.indexdata.dk/yaz/. Вы можете найти новости, примеры скриптов и т.п. для этого расширения http://www.indexdata.dk/phpyaz/.

Этот модуль скрывает сложную работу Z39.50 таким образом, что пользоваться им достаточно легко. Он поддерживает постоянные бесстатусные соединения, очень похожие на соединения, предлагаемые различными SQL API, доступными для PHP. Это означает, что сессии являются бесстатусными, но используются совместно несколькими пользователями, сохраняя таким образом соединение и шаги фазы инициализации в большинстве случаев.


Установка

Скомпилируйте YAZ и установите его. Постройте PHP с нужными модулями и добавьте опцию
--with-yaz. Ваши действия будут выглядеть примерно так:

gunzip -c yaz-1.6.tar.gz|tar xf -
gunzip -c php-4.0.X.tar.gz|tar xf -
cd yaz-1.6
./configure --prefix=/usr
make
make install
cd ../php-4.0.X
./configure --with-yaz=/usr/bin
make
make install

Пример

PHP/YAZ отслеживает соединения с targets (Z-ассоциациями). Положительное целое число представляет ID конкретной ассоциации.

CIX. Функции Zip-файлов (доступ только для чтения)

Этот модуль использует функции библиотеки ZZIPlib, автор Guido Draheim, для прозрачного чтения ZIP-архивов и фалов в них.

Обратите внимание, что ZZIPlib предоставляет только поднабор функций, предоставленных в полной реализации алгоритма ZIP-компрессии, и может только читать файловые ZIP-архивы. Необходима нормальная утилита ZIP для создания ZIP-архива, читаемого этой библиотекой.

Поддержка Zip в PHP по умолчанию не включена. Вы должны будете использовать опцию конфигурации --with-zip при компиляции PHP, чтобы включить поддержку zip.
Этот модуль требует ZZIPlib версии >= 0.10.6.

Примечание: поддержка Zip до PHP 4.1.0 является экспериментальной. Данный раздел отражает расширение Zip, как оно имеется в PHP 4.1.0 и позднее.


Пример использования

В этом примере открывается файловый архив ZIP, читается каждый файл архива и печатается их содержимое. Архив test2.zip, используемый с этом примере, это один из тестовых архивов дистрибутива ZZIPlib.

CX. Функции Zlib-компрессии

Этот модуль использует функции zlib, авторы Jean-loup Gailly и Mark Adler, для прозрачного чтения и записи архивированных файлов gzip (.gz). вы должны использовать версию zlib >= 1.0.9 с этим модулем.

Этот модуль содержит версии большинства filesystem-функций, которые работают с gzip-архивами (а также с  несжатыми файлами, но не с сокетами).

Примечание: версия 4.0.4 вводит fopen-оболочку для .gz-файлов, так что вы можете использовать специальный 'zlib:' URL для доступа к сжатым файлам прозрачно, с помощью нормальных f*() функций доступа к файлам, если введёте к filename или path префикс 'zlib:' при вызове fopen().

В версии 4.3.0 этот специальный префикс был изменён на 'zlib://', чтобы предотвратить разночтение с именами файлов, содержащими ':'.

Это требует библиотеки времени выполнения С, которая предоставляет функцию fopencookie(). Насколько я знаю, GNU libc является единственной библиотекой, предоставляющей эту возможность.


Небольшой пример кода

Здесь открывается временный файл и в него записывается тестовая строка, затем дважды печатается содержимое этого файла.

register_shutdown_function

(PHP 3>= 3.0.4, PHP 4)

register_shutdown_function - регистрирует функцию для выполнения при выключении.

Описание

int register_shutdown_function (string func)

Регистрирует функцию func для выполнения по завершении работы скрипта.

Можно делать множественные вызовы register_shutdown_function(), и каждая будет вызвана в том порядке, в котором была зарегистрирована. Если вы вызываете exit() внутри одной зарегистрированной shutdown-функции, процессинг полностью останавливается и другие зарегистрированные shutdown-функции не будут вызываться.

Зарегистрированные shutdown-функции вызываются после завершения выполнения запроса (включая отправку всех буферов вывода), поэтому невозможно отправить вывод в браузер функциями echo() и print() или запросить содержимое любого буфера вывода с использованием ob_get_contents().

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

register_tick_function

(PHP 4 >= 4.0.3)

register_tick_function - регистрирует функцию для выполнения при каждом тике.

Описание

void register_tick_function (string func [, mixed arg])

Регистрирует функцию func для выполнения при вызове tick.

rename

(PHP 3, PHP 4)

rename - переименовывает файл.

Описание

bool rename (string oldname, string newname)

Пытается переименовать oldname в newname.

Возвращает TRUE при успехе, FALSE при неудаче.

require()

Оператор require() подключает/include и вычисляет определённый файл.

Детально процесс подключения описан в документации для include().

require() и include() идентичны почти во всём, за исключением того, как они обрабатывают неудачное выполнение. include() выдаёт Warning!, а require() выдаёт Fatal Error. Иначе говоря, не бойтесь использовать require(), если вам нужно, чтобы отсутствующий файл останавливал обработку страницы. include() не работает таким образом: скрипт всё равно продолжит работу. Убедитесь также в наличии соответствующей установки include_path.

require_once()

Оператор require_once() подключает/include и вычисляет специфицированный файл в процессе выполнения скрипта. Это поведение напоминает оператор require() с той только разницей, что, если код из файла уже был подключён, он не будет подключён ещё раз. См. в документации к require() информацию о работе этого оператора.

require_once() должна использоваться в тех случаях, когда один и тот же файл может быть подключён и вычислен более одного раза в процессе определённого выполнения скрипта, а вы хотите иметь уверенность, что он включён точно один раз, чтобы избежать проблем с повторным определением функций, переназначениями переменных etc.

Например, при использовании require_once() и include_once() посмотрите на PEAR-код, включённый в последние дистрибутивы исходного кода PHP.

Примечание: require_once() была введена в PHP 4.0.1pl2.

Предупреждение!Windows-версия PHP в настоящее время не поддерживает доступ к удалённым файлам для этой функции, даже если включена опция allow_url_fopen.

См. также require(), include(), include_once(), get_required_files(), get_included_files(), readfile() и virtual().

reset

(PHP 3, PHP 4)

reset - устанавливает внутренний указатель массива на первый элемент.

Описание

mixed reset (array array)

reset() возвращает внутренний указатель массива array на первый элемент.

reset() возвращает значение первого элемента массива.

См. также current(), each(), next() и prev().

restore_error_handler

(PHP 4 >= 4.0.1)

restore_error_handler - восстанавливает предыдущую функцию обработчика ошибок.

Описание

void restore_error_handler (void)

Используется после изменения функции-обработчика ошибок функцией set_error_handler() для возвращения предыдущего обработчика ошибок (который может быть встроенной или пользовательской функцией).

См. также error_reporting(), set_error_handler(), trigger_error(), user_error().

return

Если вызывается из функции, оператор return() немедленно заканчивает выполнение текущей функции и возвращает свой аргумент как значение вызова функции. return() также заканчивает выполнение оператора eval() или файла скрипта.

Если вызывается из глобальной области видимости, выполнение файла текущего скрипта заканчивается. Если файл текущего скрипта был include() или require(), то управление передаётся обратно в вызывающий файл. Следовательно, если файл текущего скрипта был include(), то заданное для return() значение будет возвращено как значение вызова include(). Если return() вызывается из главного файла скрипта, выполнение скрипта завершается. Если текущий файл скрипта был именован опциями конфигурации auto_prepend_file или auto_append_file в файле конфигурации, то выполнение файла этого скрипта заканчивается.

Дополнительно см. Возвращаемые значения.

Примечание: заметьте, что, поскольку return() является конструкцией языка, а не функцией, скобки, окружающие её аргументы, не требуются - фактически чаще всего они опускаются, а не используются, хотя это и не имеет значения.

Возвращаемые значения

Значения из функций возвращаются с помощью необязательного оператора return. Может быть возвращён любой тип, в том числе список и объект. Этот оператор немедленно останавливает выполнение функции и передаёт управление обратно на строчку, с которой функция была вызвана. Дополнительно см. return().

rewind

(PHP 3, PHP 4)

rewind - возвращает файловый указатель в начало.

Описание

int rewind (int fp)

Устанавливает файловый индикатор позиции для fp в начало файлового потока.

Если возникла ошибка, возвращает 0.

Файловый указатель обязан быть правильным и обязан указывать на файл, успешно открытый функцией fopen().

Примечание: если вы открыли файл в режиме присоединения/append ("a"), любые записываемые в файл данные всегда будут присоединяться, независимо от позиции файлового указателя.

См. также fseek() и ftell().

rewinddir

(PHP 3, PHP 4)

rewinddir - возвращает в начало дескриптор директории.

Описание

void rewinddir (resource dir_handle)

Восстанавливает дескриптор потока директории dir_handle в начало директории.

rmdir

(PHP 3, PHP 4)

rmdir - удаляет директорию.

Описание

bool rmdir (string dirname)

Пытается удалить директорию dirname. Директория обязана быть пустой, и соответствующие права на удаление должны иметься. Возвращает TRUE при успехе, FALSE при неудаче.

См. также mkdir() и unlink().

round

(PHP 3, PHP 4)

round - округляет число с плавающей точкой/float.

Описание

float round (float val [, int precision])

Возвращает значение числа val, округлённое до специфицированной точности precision (количество цифр после десятичной точки). precision может быть также отрицательным или нулём (по умолчанию).

Предупреждение!PHP по умолчанию не обрабатывает корректно строки вроде "12,300.2". См. конвертация из строк.

echo round(3.4); // 3
echo round(3.5); // 4
echo round(3.6); // 4
echo round(3.6, 0); // 4
echo round(1.95583, 2); // 1.96
echo round(1241757, -3); // 1242000

Примечание: параметр precision доступен только в PHP 4.

См. также ceil() и floor().

rsort

(PHP 3, PHP 4)

rsort - сортирует массив в обратном порядке.

Описание

void rsort (array array [, int sort_flags])

Эта функция сортирует массив в обратном порядке (от высшего к низшему).

Пример 1. rsort()
$fruits = array ("lemon", "orange", "banana", "apple");
rsort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
echo "$key = $val\n";
}

Этот пример выведет:

rtrim

(PHP 3, PHP 4)

rtrim - вырезает пробелы в конце строки.

Описание

string rtrim (string str [, string charlist])

Примечание: второй параметр был добавлен в PHP 4.1.0.

Эта функция возвращает строку str с вырезанными в конце пробелами. Без второго параметра rtrim() вырежет следующие символы:

" " (ASCII 32 (0x20)), обычный пробел/space.

"\t" (ASCII 9 (0x09)), табуляцию/tab.

"\n" (ASCII 10 (0x0A)), символ новой строки (line feed).

"\r" (ASCII 13 (0x0D)), возврат каретки/carriage return.

"\0" (ASCII 0 (0x00)), NUL-байт.

"\x0B" (ASCII 11 (0x0B)), табуляция по вертикали/vertical tab.

Вы можете также специфицировать символы, которые вы хотите вырезать, с помощью параметра charlist. Просто перечислите все символы, которые вы хотите вырезать. С помощью .. вы можете специфицировать диапазон символов.

sem_acquire

(PHP 3>= 3.0.6, PHP 4)

sem_acquire - получает семафор.

Описание

bool sem_acquire (int sem_identifier)

Возвращает TRUE при успехе, FALSE при ошибке.

sem_acquire() блокирует (если необходимо), пока семафор не сможет быть получен. Процесс попытки получения семафора, который уже был получен, блокирует бесконечно, если получение семафора вызовет превышение значения max_acquire.

После обработки запроса любые семафоры, полученные процессом, но не освобождённые явным образом, будут освобождены автоматически и будет сгенерировано предупреждение.

См. также sem_get() и sem_release().

sem_get

(PHP 3>= 3.0.6, PHP 4)

sem_get - получает id семафора.

Описание

int sem_get (int key [, int max_acquire [, int perm]])

Возвращает положительный идентификатор семафора при успехе, FALSE при ошибке.

sem_get() возвращает id, который может использоваться для доступа к семафору System V с данным ключом. Семафор создаётся, если необходимо, с использованием битов допуска, специфицированных в параметре perm (по умолчанию 0666). Количество процессов, которые могут получать семафор одновременно, устанавливается параметром max_acquire (по умолчанию 1). В настоящее время это значение устанавливается только в том случае, если процесс обнаруживает, что он является единственным процессом, присоединённым к этому семафору.

Второй вызов sem_get() для того же ключа возвращает другой идентификатор семафора, но оба идентификатора указывают на один семафор.

См. также sem_acquire(), sem_release() и ftok().

Примечание: эта функция не работает на системах Windows.

sem_release

(PHP 3>= 3.0.6, PHP 4)

sem_release - освобождает семафор.

Описание

bool sem_release (int sem_identifier)

Возвращает TRUE при успехе, FALSE при ошибке.

sem_release() освобождает семафор, если он в данный момент получен вызывающим процессом, иначе генерируется предупреждение.

После освобождения семафора sem_acquire() может быть вновь вызвана для его получения.

См. также sem_get() и sem_acquire().

Примечание: эта функция не работает на системах Windows.