понедельник, 18 марта 2019 г.

Как использовать MiniM в качестве CGI обработчика

Процесс MiniM Database Server может быть запущен с использованием стандартного ввода-вывода, что позволяет использовать его как простой CGI обработчик web запросов.

Для того чтобы запустить процесс MiniM в качестве обработчика CGI требуется выполнить соответствующие шаги для такой настройки:

1. Берем апач. (Apache Web Server)

2. Апачу в каталог cgi-bin кладем файл hello.m с таким содержанием:
#! e:\workfiles\minim\bin\minim -std -h 
   -x "zn \"user\" d ^WEB" -ignore
3. Делаем рутину ^WEB с таким содержанием:
WEB
 w "Content-Type: text/html",$c(10,10)
 w "<html>",$c(10)
 w "<head><title>Web Response from 
MiniM</title></head>",$c(10)
 w "<body>",$c(10)
 w "<h3>Web Response from MiniM</h3>",$c(10)
 w "<p>",$zv,$c(10)
 w "<p>",$v("proc",9,"SERVER_SOFTWARE"),$c(10)
 w "<p>Query parameters are:",$c(10)
 w "<p>",$v("proc",9,"QUERY_STRING"),$c(10)
 w "</body>",$c(10)
 w "</html>",$c(10)
 q
4. Запускаем браузер по адресу http://localhost/cgi-bin/hello.m

5. Запускаем с передачей параметров http://localhost/cgi-bin/hello.m?param=123

Теперь пояснения по проделанным шагам:

1) Вместо ожидаемого
 w "Content-Type: text/html",!!
пишем
w "Content-Type: text/html",$c(10,10)
потому, что апач ждет именно эти байты как терминатор строк заголовка

2) e:\workfiles\minim\bin\minim указывает что запускаем процесс MiniM. Здесь нужно указать реальное размещение исполняемого файла.

3) -std указывает процессу использовать стандартный ввод-вывод

4) -h указывает что после отработки команд завершить процесс

5) -x указывает выполнить следующий параметр

6) \"user\" указывает передать двойные кавычки в теле параметра

7) d ^WEB указывает выполнить рутину ^WEB

8) Вместо переносов как ! стоит вывод символа $c(10) явно. В местах кроме терминаторов http ответа можно использовать и write !.

9) $v("proc",9,paramname) получает параметры окружения, которые создает веб-сервер для запускаемого cgi-процесса.

10) Для преобразований текста и значений параметров есть функция $zcvt.

11) Ключ -ignore указывает игнорировать этот ключ и автоматически добавляемые веб-сервером другие параметры.

Приведенный способ вызова с одной стороны краткий и позволяет точно формировать весь ответ вебсерверу, с другой стороны механизм CGI не ограничен в количестве процессов и может сложиться ситуация что одновременно требуется обработать больше запросов чем позволяет ограничение сервера. В этом случае можно рекомендовать использовать MiniM Web Access.

Комментариев нет:

Отправить комментарий