Файл инициализации содержит инициализацию системных переменных и набор настроек.
Файл проекта содержит в основном системные таблицы, которые требуются для работы сервера и входят в состав дистрибутива.
Файл инициализации
Запуск программы dbfWebServer. exe начинается с загрузки стартового файла dbfWebServer.BEG.
Инициализация программы (а это для нее ответственный момент) производится с помощью специального файла. Это делается для того, чтобы объявить и инициализировать глобальные и системные переменные вне программы, предоставив пользователю возможность тонкой настройки, если такая необходимость возникнет.
В файле инициализации устанавливаются предварительные настройки сервера и базы данных. Эти настройки можно редактировать или дополнять. Редактировать настройки можно с помощью любого редактора. Изменять что-либо желательно только после того, как вы хорошо изучили предмет и понимаете смысл и назначение установок. Начальное содержание этого файла следующее:
Файл dbfWebServer.BEG
Set (01,«OFF»),Set (03,4 ),Set(04,"dd.mm.yy»),Set (08,«ON»), Set (09,«ON»)
Set (11,«ON»),Set (14,10),Set (31,.F.),Set (32,«OFF»),Set (35,«ON»)
ixPUB («arrDbfRun», arRay (512,2))
ixPUB («arrDbfOpe», arRay (64))
ixPUB (»_DBF_», «STA»)
ixPUB («M», «001»)
ixPUB («ixPORT», 4180)
Список наиболее значимых переменных для программы, объявленных и инициализированных в стартовом файле программы, следующий:
arrDbfRun
– массив, предназначенный для блоков кода, готовых к выполнению
arrDbfOpe
– массив, предназначенный для хранения списка открытых файлов. Эта переменная является элементом системы динамического открытия файлов
ixPORT
– номер порта, на котором программа слушает и принимает сообщения
Стартовый файл проекта
Файл, содержащий список таблиц, называется dbfWebServer. txt
Этот файл используется динамическим загрузчиком. Назначение этого файла и формат записей будут рассмотрены ниже. Здесь следует отметить только то, что сервер может стартовать без этого файла, но в дальнейшем обращение к таблицам без проекта таблиц в последующей работе будет затруднительно, можно использовать только простые страницы, без обращения к таблицам.
Привязка сервера
Иногда сервер dbfWebServer будет устанавливаться параллельно с другим сервером. У пользователя уже может действовать какая-либо система работы с данными. В этом случае установка требует нескольких манипуляций в ручном режиме.
Рассмотрим это на примере, когда на компьютере уже установлен комплекс из сервера Apache и базы данных MySQL.
Для сервера Apache и ряда других WEB серверов, как правило, создаётся рабочая директория, содержащая рабочие скрипты, с именем
\www\
В многопрофильной системе IxBase, в которую входит данный комплекс, используется следующий путь расположения компонент системы:
\ixb\bin\www\
В директории \ixb\bin\ находится сам сервер (программа) Apache. exe.
В директории \ixb\mysql\ находится база данных MySQL.
Рабочие файлы дистрибутива сервера dbfWebServer копируются в этом случае соответственно в директорию \ixb\bin\.
Содержимое директории \www\ сервера dbfWebServer копируется в директорию \ixb\bin\www\ уже установленного, например, сервера многопрофильной системы ixBase.
Глава 2. Особенности программирования
Главной особенностью является использование блоков кода. Синтаксис блоков кода несколько отличается от синтаксиса исходного кода программы в стиле xBASE. В блоках кода отсутствует возможность использования итераторов WHILE, FOR. Вместо этого используются итераторы по базе данных или массиву dbEval () и aEval (). В блоке кода функции объединяются в группы в явном или неявном виде, то есть представляют собой одну строку, в которой операторы разделены запятой, например
DBFRUN00-> (dbGoGop (),FieldGet (1))
Дополнительные функции
Сервер имеет свою специфику, поэтому разработан ряд дополнительных функций, предназначенных для более эффективной работы с сервером.
ixPUB (cArg1,value) – объявление глобальной переменной. Первый аргумент задаёт имя переменной в виде строки. Второй аргумент функции – значение, присваиваемое переменной. Значение может быть любого допустимого типа.
ixWhile (cKey, cValue) – итератор, используемый в блоках кода. Первый строковый аргумент задаёт условие цикла, второй строковый аргумент определяет блок кода (функцию).
dbfRun (cName) – функция, запускающая блок кода на выполнение. Может вызываться из блока кода. Работает совместно с таблицей DBFRUN00.
DbfOut (bLine, RelNam, RelVal, KeyNam, KeyVal, Filter, PrUni, MaxEle) – функция, предназначенная для вывода списка из базы данных согласно заданным параметрам. Представляет собой альтернативу функции dbEval (), в некоторых случаях позволяет добиться лучших результатов.
_x_sta (cStr_1,cStr_2,cStr_3) – функция, предназначенная для вывода сообщений в окне программы.
encode (cString) – функция перекодировки данных, передаваемых по каналу Интернет.
Системные таблицы сервера
Основным постулатом системы является то, что весь исходный код хранится в базе данных. Исходный код заносится в виде блоков кода, совместимых с системой CLIPPER 5.3.
Чтобы разделить управление между различными программами реализациями информационных технологий ixBASE, используются следующие системные таблицы:
DBFHTM00. Используется CGI-скриптами HRB. EXE (Harbour), CLP. EXE (CLIPPER 5.3), ALS. EXE (Alaska). Скрипты работают под управлением WIN32. Для операционной системы UNIX скрипт находится в разработке, желающие могут скомпилировать его самостоятельно.