parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Парсер 3.4.6b - встроенный веб-сервер

moko 18.12.2020 16:31 / 18.12.2020 16:47

В ночных сборках выложена версия парсера со встроенным веб-сервером. В первую очередь для упрощения локальной разработки (не нужно настраивать apache), но можно использовать и в production, например в сочетании с nginx.

Самый простой вариант использования - встать в папку сайта и запустить cgi\parser3.exe -p 8080 (для Windows). В этом случае вызовется метод httpd-main, который добавлен в конфигурационный auto.p и в котором реализована вся логика работы веб-сервера (70 строк, если не считать настроек). Настройки сейчас такие:
$httpd[
        $.parser[(\.html^$)] - расширения, который должен обрабатывать парсер
        $.index[index.html] - индексный файл. Для эффективности один, в коде ниже можно добавить еще проверок.
#       $.autoindex(true) - при отсутствии индексного файла показывать листинг директории
        $.404[$httpd-404] - как обрабатывать 404 ошибку. Можно вызывать метод
#       $.404[/_doc.html] - а можно определенный файл
        $.auth[ $.url[^^/\.?admin/] $.login[admin] $.password[test] $.realm[site administration] ] - можно закрыть раздел авторизацией.
        $.deny[(/\.ht[^^/]+|\.p|\.cfg)^$] - к таким файлам доступ запрещен.
        $.403[Permission denied] - обработчик запрещенных файлов
        $.memory(64000) - вызывать сборщик мусора после аллокации каждых 64Mb
        $.log[/access.log] - логгировать ли приходящие запросы
]
В сборках для Windows конфигурационный auto.p обновлен, для сборок под Unix его можно взять здесь или на Github.

У веб-сервера 3 режима работы - последовательная обработка приходящих запросов (по умолчанию), параллельный (на каждый запрос создается отдельный процесс - работает только под Unix), многопоточный (на каждый запрос создается отдельный поток). Можно настроить в @conf, как и таймаут входящих соедиений.
$HTTPD[
#       $.mode[parallel]
#       $.mode[threaded]
        $.timeout(4)
]
Приветствуются замечания, багрепорты и дополнения по логике работы веб-сервера.

В процессе реализации веб-сервера была достаточно сильно переписана логика обработки запросов в парсере, добавлены некоторые мелочи (например возможность изменять $form:<поле>). Пишите, если заметите несовместимости.

Помимо этого в ^image::measure[] добавлена поддержка webp и mp4. Прочие подробности в ChangeLog парсера или спрашивайте.