Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / PHP / Руководство по РНР 3.0 / Справочник функций /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Функции работы с Hyperwave - Программирование от RIN.RU
Функции работы с Hyperwave

hw_Changeobject
hw_Children
hw_ChildrenObj
hw_Close
hw_Connect
hw_Cp
hw_Deleteobject
hw_DocByAnchor
hw_DocByAnchorObj
hw_DocumentAttributes
hw_DocumentBodyTag
hw_DocumentSize
hw_ErrorMsg
hw_EditText
hw_Error
hw_Free_Document
hw_GetParents
hw_GetParentsObj
hw_GetChildColl
hw_GetChildCollObj
hw_GetSrcByDestObj
hw_GetObject
hw_GetAndLock
hw_GetText
hw_GetObjectByQuery
hw_GetObjectByQueryObj
hw_GetObjectByQueryColl
hw_GetObjectByQueryCollObj
hw_GetChildDocColl
hw_GetChildDocCollObj
hw_GetAnchors
hw_GetAnchorsObj
hw_Mv
hw_Identify
hw_InCollections
hw_Info
hw_InsColl
hw_InsDoc
hw_InsertDocument
hw_New_Document
hw_Objrec2Array
hw_OutputDocument
hw_pConnect
hw_PipeDocument
hw_Root
hw_Unlock
hw_Username



Вступление


Hyperwave был разработан IICM в Гразе (Graz). Первоначально пакет назывался Hyper-G и был изменен на Hyperwave после коммерциализации (где-то в 1996).


Hyperwave не является свободно распространяемым ПО. Текущая версия, 4.0, доступна www.hyperwave.com. Существует 30-дневная версия.


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


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


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


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


На основе вышеизложенных механизмов ссылки вставляются в документ.


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


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


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


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


  • object ID: уникально целое значение для каждого объекта в Hyperwave сервере. Это также одни из атрибутов объектной записи (ObjectID). ИД объектов часто используются в качестве входных параметров для спецификации объекта.

  • object record: строка с парами атрибут-значение в фоме атрибут=значение. пары одделены одна от друкой символом возврата каретки. ОБъектная запись может быть просто переконвертирована в объектный массив: hw_object2array(). Несколько функций (их имена заканчиваются на obj) возвращают объектные записи.

  • object array: ассоциативный массив со всеми атрибутами объекта. Ключ - имя атрибута. Если атрибут встречается в объектной записи несколько раз, это ведет к появлению другого индекса или индексного массива. Атрибуты, определнные в языке, будут иметь множство ключей, аббревиатур языка в ассоциативном массиве. Все другие множественные атрибуты формируют индексные массивы. Функции php3 никогда не возвращают объектных массивов.

  • hw_document: это совершенно новый тип данных, который описывает наличный документ, напимер HTML, PDF и др. Он несколько оптимизированн под HTML, но может быть использован и с другими форматами.


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


Hidden

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

CollectionHead

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

FullCollectionHead

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

CollectionHeadNr

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

FullCollectionHeadNr

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

Total

Общее число объектных записей.

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

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


С тех пор, как PHP3 с Hyperwave поддерживают встраивание в Апач, предполагается, что родное решение Hyperwave - wavemaster - автоматически замещается. Т.е. Апач примет на себя функции веб-интерфейса к Hyperwave. Это не есть необходимость, но конфигурация упрощается. Идея достаточно проста. Перво-наперво вам необходим PHP3-скрипт, который оценивает переменную PATH_INFO и рассматривает ее значение как имя Hyperwave объекта. Пусть скрипт называется "Hyperwave". URL http://your.hostname/Hyperwave/name_of_object возвратит Hyperwave объект с именем "name_of_object". Реакция скрипта зависит от типа объекта. Если это коллекция, он возможно вернет список наследников. Если это документ, он возвратит mime-тип и содержание. Небольшое улучшение может быть достигнуто, если используется движок перезаписи Апача. С точки зрения пользователя, это более прямой путь, если 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" будут скрытыми. Поэтому, будьте уверены, что вы не используете таких имен. Если вам необходимо больше директорий, например для изображений, добавьте еще правила или сложите все в оодной директории. Наконец, не забудьте запустить перезаписывающий движок с


RewriteEngine on


Мой опыт подсказывает, что вам понадобятся следующие скрипты:


  • для возврата самого объекта

  • для разрешения проблемы поиска

  • для идентификации вас

  • для установки профиля

  • один для каждой дополнительной функции, как то показа атрибутов объекта. показа информации о пользователе, показа статуса сервера и др.


Замечания
Еще несколько замечаний:


  • Функция hw_InsertDocument расщеплена на hw_InsertObject() и hw_PutDocument().

  • Имена некоторых функций пока еще не подтверждены.

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




Вперед  >>>
 1  2 


 8  Комментарии к статье  8  Обсудить в форуме  8  Обсудить в чате

8  В тему

Adabas D функции

Специфичные функции Apache

Функции обработки массивов

Математические BC (произвольной точности) функции

Календарные Функции

Функции Даты/Времени

dBase функции

Функции dbm

Функции для работы с каталогами

Функции запуска программ

Функции работы с filePro

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

Функции, связанные с HTTP

Функции работы с изображениями

Функции IMAP

PHP опции и информация

Функции работы с Informix

LDAP Функции

Почтовые функции

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

Дополнительные функции

Функции mSQL

Функции MySQL

Функции для работы с Sybase

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

Функции ODBC

Функции Oracle

Функции PDF

Функции PostgreSQL

Функции регулярных выражений

Функции семафоров и разделяемой памяти

Solid (надежные) функции

Функции SNMP

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

Функции URL

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

Функции Vmailmgr

Функции Gz-файлов

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь