Парсер 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 парсера или спрашивайте.
- Парсер 3.4.6b - встроенный веб-сервер, moko [M] 18.12.2020 16:31 / 18.12.2020 16:47
- Как тут реализовать rewrite аля apache? httpS - через nginx с проксированием запросов в парсер?, sergei v.2 06.08.2022 12:28 / 06.08.2022 12:40
- Ответ, moko [M] 09.08.2022 08:19
- А что процесс сервера делает в фоне?, G_Z [M] 30.11.2021 04:49
- Ответ, moko [M] 30.11.2021 19:27
- Ответ, G_Z [M] 30.11.2021 23:19 / 01.12.2021 14:26
- httpd class is undefined, G_Z [M] 26.11.2021 23:31 / 27.11.2021 05:57
- Ответ, moko [M] 27.11.2021 17:20
- Ответ, G_Z [M] 28.11.2021 02:50
- x64 не запускается в win-x64, Maxx [M] 25.01.2021 08:12 / 25.01.2021 08:17
- Автоматический сборщик мусора, Maxx [M] 15.01.2021 06:05
- $main:HTTPD.mode must be 'sequental' or 'threaded', G_Z [M] 28.12.2020 18:27
- Без идей, moko [M] 29.12.2020 01:11 / 29.12.2020 01:12
- Ответ, G_Z [M] 29.12.2020 01:25
- А как с кэшированием?, G_Z [M] 28.12.2020 05:28 / 28.12.2020 05:29
- Проблему не подтверждаю, moko [M] 28.12.2020 12:07 / 28.12.2020 12:44
- Ответ, G_Z [M] 28.12.2020 15:29 / 28.12.2020 15:29
- Ответ, moko [M] 28.12.2020 15:38
- Ответ, G_Z [M] 28.12.2020 15:44 / 28.12.2020 16:05
- Прикольно :), Maxx [M] 25.12.2020 07:38
- Ответ, moko 25.12.2020 13:42
- Так что получается через встроенный вебсервер он будет работать быстрее?, coel 25.12.2020 03:19
- Ух-ты, значимость этого недооценена!, AlexZimmer 24.12.2020 22:54
- Кстати www.parser.ru уже сутки работает на встроенном в парсер веб-сервере. :), moko [M] 23.12.2020 14:08
- И в docker! :), redactor [M] 22.12.2020 23:17
- GET и POST бы в form различать, для порядка ещё, Colonel 21.12.2020 04:53
- Круто! Наконец-то мы дожили до даймона парсера., Ivan Sergeev 20.12.2020 13:15
- Может его вынести в отдельный класс?, G_Z [M] 18.12.2020 20:29