Проект Ora*php представляется собой библиотеку php функций для обращений к Oracle основанную на OCI8 - модуле входящем в стандартную поставку php 4.* (С) Dsvolk dsvolk@yandex.ru А также см. (С) в файлах. Перед прочтением настоятельно рекомендую просмотреть статью мистера Thies C. Arntzen "Making efficient use of Oracle8i thru Apache and PHP 4" http://conf.php.net/pres/slides/oci/paper.txt или paper.txt из архива ora.tar.gz Фичи Ora*php: ----------- -- Упрощенные вызовы для исполнения запросов и процедур. Для исполнения запроса требуется вызов только 1 функции ! Для сравнения на OCI8 нужно: Prepare Bind ... Bind Execute Fetch commit Пример на ora*php см. test/ora_test.php -- Поддержка передачи в качетсве параметров CLOB и массивов данных -- Управление возможность Autocommit. -- Большая часть рутины по обработке и логированию ошибок делается за Вас ! -- конфигурируемые preferences модуля и подключаемые расширения (ora_ini.php) -- обработка ошибок - сохраняются в Apache log -- хранение сессий php в oracle -- хранение протоколов работы в oracle -- profiler - запросы с их временем выполнения хранятся в oracle ! Перед использованием модуля внимательно просмотрите ora_ini.php, в том числе что необходимо поставить в php.ini Основные вызовы Ora*php ------------------------ 1) Соединение с БД - ora_logon (). Параметры соединния хранятся в файле ora_passwd.inc. Вообще-то Вам это не нужно если вы будете использовать ora_session. 2) Вызов DDL предложения - ora_exec_plsql. Выполняет как pl/sql блоки так и ddl выражения. имеет упрощенный режим при котором не обязательно писать begin..end 3) Выполнить запрос - ora_select_arrays. Результаты запросы попадают в массив. В отличии от принятого соглашения Oracle все названия колонок переводятся в lower case 4) Получить ровно одну строчку ora_select_one_row. Результаты попадают в массив. В отличии от принятого соглашения Oracle все названия колонок переводятся в lower case 5) Вызвать процедуру ora_exec_proc. Не нужно указывать параметры процедуры, если они совпадают с ключами массива $params. Для out параметров автоматичски будет проставлена нужная длина (берется из описания процедуры в Oracle) 6) Вызвать функцию ora_exec_func. Все тоже что и для ora_exec_proc, только добавлен параметр - куда сложить результат выполнения функции Обработка ошибок ---------------- Ora@php поддерживает интегрированную с Apache систему обработки ошибок. В случае ошибки в apache error_log пишется последний выполняемый запрос, ошибка ORA-...., php файл и строка в которой произошла ошибка. Есть возможность также сохранить значения bind переменных запроса. Уровень выдаваемой информации устанавливается в $ora['error_level']. Для пользователя формируется сообщение об ошибке следующим образом: если это пользовательское сообщение об ошибке, те его код < -20000 то показывается оно, иначе сообщение $ora_message['system_error']. Это конечно требует чтобы процедуры БД имели хороший обработчик ошибок. У меня так оно и есть :)) Если Вам не нравиться писать ошибки в error_log то напишите свою функцию хранения ошибок и укажите ее в $ora['error_log_func'] Хранение сессий (ora_session.php) --------------- Здесь используется встроенная возможность php переопределить обработчик сессий. Почему это может быть полезно ? Вы можете легко смотреть активные сессии и при использовании модуля ora_log.php одним запросом смотреть за ее действиями. Вы даже можете удалить сессию ! Если вы используете этот модуль Вам нет необходимости выполнять connect к БД. Он выполняется самостоятельно в момент создания сессии. При этом используется информация из файла ora_passwd.php Детали хранение и API находятся в файле ora_session.sql Если Вам необходимо проверять аутенфикацию пользователей дополнительно то используйте модуль ora_auth для этой цели. Протоколы работы (ora_log.php) ------------------ Для того чтобы определить какой из ваших модулей наиболее часто используется, или с какими параметрами он был вызван вым необходимо вести протоколы. Я люблю вести такие протоколы в БД - получать статистику прямо запросами. Для разбора полетов бывает связать log с архивом сессий. У Вас сохраняется полная картина произошедшего ! Детали хранение и API в файле ora_log.sql Profiler (ora_profiler.php) -------- Это возможность вам позволяет не обращаеясь к тюнингу Oracle сразу получить информацию о наиболее длинных запросов к БД. Сохраняется текст запроса, время выполнения, времена парсинга и извлечения записей. Вы можете легко опеределить возникающие проблемы, а также поскольку хранится лог, опеределить сколько времени выполнялся это запрос в прошлом месяце. Такая уникальная возможность есть только в специализированных утилитах администратора БД ! Детали хранение и API в файле ora_profiler.sql Заключение ----------- Внмательно посмотрите файл ora_ini.php. Он содержит все что Вам нужно для настройки ora*php под Ваши нужды.