URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 3590
[ Назад ]

Исходное сообщение
"Как написать демон, работающий 80 порту параллельно с Apache"

Отправлено Blitz , 21-Сен-05 11:49 
Всем добрый день.
Прошу прощение за странное название темы - не смог ёмко изложить поставленный вопрос ;)

Очень хотелось бы получить советов по решению следующей проблемы:

Думаю, как написать "сервер", который будет выполнять следующую задачу: принимать все соединения через 80 порт, в которых запрашивается конкретное имя скрипта (chat_out.??? например) и работать с ними. Т.е. подразумевается паралелльная работа с большим количеством соединений. Причем соединение закрываться быстро не будет - собираюсь например отправить Content-length очень большим и долго выводить сообщения, не закрывая соединений.
Это все должно происходить при работающей на том же 80ом порту Апачей. (не обязательно, конечно, самому обрабатывать ХТТП-пакет, можно это оставить и веб-серверу)

Не могу найти механизм, который позволит это реализовать - Апача обрабатывает все запросы на свой порт, поэтому не представляю, как "заставить" ее передавать запрос, в котором упоминается конкретный скрипт, другому обработчику (причем не запуская новый процесс, а именно соединяясь уже с существующим).

Я рассматривал:
fastCGI - по описанию модуля Perl FCGI, насколько я понял, он не поддерживает режима когда один скрипт обрабатывает ВСЕ запросы.

написать свой модуль для Apache который будет по внутренним сокетам ОС связываться с демоном, который и будет выполнять необходимую функциональность. Выглядит это достаточно сложно.

Возможны ли рассматриваемые варианты? Есть ли другие? (в принципе язык написания не принципиален, если нужно, то можно и не на Перле)

Буду очень благодарен любым ссылкам по данной теме. Возможно, я копаюсь совершенно не там - тогда буду рад выслушать правильные варианты.


Содержание

Сообщения в этом обсуждении
"Как написать демон, работающий 80 порту параллельно с Apache"
Отправлено Alexandr , 21-Сен-05 12:59 
Тривиально. Сооруди нормальный cgi скрипт (программу на C) которая при запуске будет подключаться к работающему процессу через сокет файловой системы и соединять его с апачем накоротко. Так работают антивирусы - висит один процесс, который уже загрузил базу данных, к нему подсоединяются клиенты которых он обрабатывает.

Промежуточная программка будет очень маленькой и много ресурса не отожрет.
И это наверно проще, чем писать модуль для апаша. Хотя даже написание модуля гораздо проще, чем то что ты хочешь сделать.


"Как написать демон, работающий 80 порту параллельно с Apache"
Отправлено Blitz , 21-Сен-05 17:05 
Большое спасибо за ответ!

Если я правильно понимаю, то все таки предлагается делать по процессу на каждого пользователя? :-0
И еще один небольшой момент: как примерно реализуется "соединять с апачем накоротко". Подразумевается что эта цгишка соединяет накоротко, а сама закрывается?