Oracle и PHP - это очень простоВладимир Пржиялковский
ВведениеСУБД Oracle, когда против желания фирмы-изготовителя, а когда согласно - в зависимости от направления политических ветров в конкретные периоды времени, - никогда, кроме начального периода своего существования, не была полностью закрытой системой. Например, с момента возникновения движения свободного ПО, разработки, ведущиеся открытым образом ("открытыми текстами"), все время держали эту СУБД в зоне своих интересов. Когда некоторые представители такого ПО стали достаточно зрелыми, фирма Oracle, подобно другим крупным фирмам, "легализовала" связь своей СУБД с ними: ОС Linux входит в число стратегических платформ для Oracle, web-сервер Apache входит в состав штатной поставки; там же можно обнаружить следы Perl и Tcl, нашедших себе место во внутренних процессах установки (OUI) и администрирования (OEM). Эти средства помогают организовать взаимодействие с Oracle вместо средств собственной разработки (например, Developer) или в дополнение к ним. PHP принадлежит к числу средств открытого ПО, не самых популярных, но вполне состоявшихся, востребованность которых непрерывно растет. PHP позволяет динамически формировать страницы HTML на сервере web. В этом качестве он занимает нишу, общую с EmbPerl, Mason, Aquaruim (все - свободное ПО) и сервлетами (например, с JavaServer Pages). Сервером web может быть Apache, IIS или же еще несколько разновидностей. Здесь нам важно, что PHP умеет обращаться к СУБД Oracle и что это легкая и простая система. Установка PHPДальнейшие примеры будут приведены для связки Windows + Apache. Удобнее всего использовать версию Apache со штатного установочного комплекта СУБД Oracle (в версии Oracle 10.1 - на Companion CD). Дежурное напоминание: для промышленного использования сервера web лучше все же взять последнюю версию Apache из сети, так как она более функциональна, надежна и защищена. Версию PHP можно скачать с узла. Там же имеются документация, учебные материалы, форумы и ссылки на ресурсы, в числе которых есть русскоязычные. К примеру, для Windows можно скачать файл php-4.3.6-Win32.zip. Его нужно поместить в каталог, например c:\php, и разархивировать. Далее можно следовать инструкциям в install.txt, однако само ПО PHP уже установлено. В Unix еще потребуется построить библиотеки программой make. Правка файла конфигурации PHPНайдите файл php.ini. Скорее всего он в каталоге c:\WINNT. Найдите параметр extension_dir и проставьте extension_dir = "C:\php\php-4.3.6-Win32\sapi" Снимите комментарии со строк ;extension=php_oci8.dll Последний параметр требуется раскомментарить только если вы намерены проиграть следующий далее пример с записью данных в формате dbf. Правка файла конфигурации ApacheНайдите файл httpd.conf. Скорее всего он в каталоге %ORACLE_HOME%\Apache\Apache\conf. Добавьте строки: LoadModule php4_module C:/php/php-4.3.6-Win32/sapi/php4apache.dll Последний параметр уже присутствует в виде комментария, и для него достаточно просто знак комментария снять. Копирование файлов динамических модулейВ соответствии с указанным в php.ini значением параметра extension_dir скопируем файлы: c: Перезапуск Apache и проверкаОсталось перезапустить Apache. Это можно сделать либо с помощью меню Start, либо через остановку и запуск службы Windows. Если все проделано правильно, при запуске не будет ошибок. Составим файл test.php:
Поместим файл в %ORACLE_HOME%\Apache\Apache\htdocs. Наберем в браузере адрес (в версии Oracle 8 номер порта или убрать, или указать 80). Некоторые возможности PHPPHP, конечно, не столь универсальный язык, как Java, используемая в JavaServer Pages, но достаточно богат. Описание его можно найти в книгах, например в http://www.ccas.ru/~prz/ORA/phppr.html, или на вышеуказанной официальной странице PHP в интернете. Вот некоторые особенности языка. Вставки PHP в текст HTML можно оформлять не только как <?php …. ?> (см. выше), но и проще как <? …. ?> (что не рекомендуется) или же как <script language="php"> …. </script> (что длиннее). phpinfo() в примере выше - встроенная функция PHP. Регистр, которым набираются имена функций в PHP несущественен, а для переменных (предваряются знаком $, $currtime и $currtimestr в примере выше) наоборот, существенен. Переменные могут быть типов целого, плавающего, строка, массив, объект и булевского. Возможно явное преобразование типов. Выражения и операторы похожи на используемые в C и Perl. Набор функций достаточно широк и позволяет производить вычисления (в том числе с произвольной точностью), обращаться к файлам ОС и к различным базам данных, к сетевым ресурсам (например, по ftp) и к серверам LDAP, рисовать изображения и динамически выводить данные в формате pdf и многое другое. Вот несколько примеров функций, навскидку:
Посмотрим, как может выполняться обращение к данным в Oracle. Работа с OracleОбращение с помощью PHP к данным в Oracle может осуществляться через CGI или через специальные функции. Первая возможность рискована с точки зрения безопасности и здесь не рассматривается. Вторая, в свою очередь, реализуется двумя имеющимися библиотеками: php_oracle и php_oci8, из которых вторая считается более эффективной . Продемонстрировать ту и другую можно на примере файла employees.php:
Снова поместим файл в htdocs и обратимся по адресу. Этот пример для наглядности упрощен, а в жизни нужно будет больше уделить места обработке ошибок и структуризации кода. Вот пример вставки записи в БД. Данные передаются через строку запроса HTTP. Это позволяет организовать в приложении содержательный диалог, подключив средства ввода форм HTML. Подготовим файл insert.php:
Поместим файл в htdocs и обратимся по адресу. В SQL*Plus или предыдущей страницей PHP можно проверить результат. Обратите внимание на то, что в приведенном примере никак не обрабатывается (а) блокировка строк, возможно мешающая вставке и (б) возможный конфликт первичного ключа. Oracle, да не толькоКак говорилось выше, PHP имеет функции обращения к данным отнюдь не только в Oracle. Наличие этих функций дает возможным использование этого инструмента достаточно экзотично, например, для переноса данных между Oracle и другими системами. Например, нередко стоит задача переноса из формата dbf в БД под управлением Oracle или наоборот. Вот как ее можно решить "на коленке". Обратите внимание, что перенос инициируется из окошка браузера, а выполняется целиком на узле web. Составим файл dbase.php:
Поместим файл в htdocs и обратимся по адресу. В каталоге с: должен появиться файл fromoracle.dbf с данными, полученными из Oracle. Обратное преобразование можно проделать в качестве упражнения. Таким же образом можно обращаться к mySQL , PostgreSQL, Sybase, SQL Server и другим системам управления данными и по ODBC. |