|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Artem Chuprina 2:5020/371.32 19 Feb 2001 15:13:32 To : Okhoma Subject : Re: Background job -------------------------------------------------------------------------------- В твоём письме от Sun, 18 Feb 2001 23:15:53 +0300 написано: ovlu> Есть CGI скрипт, задача которого выполнить такие функции: ovlu> 1. Записать в базу данные о некоей транзакции; ovlu> 2. Отдать страничку клиенту; ovlu> 3. Сделать асинхронный HTTP request на некий URL. При получении этого ovlu> запроса, на удаленном сервере в результате выполнения некоторых действий ovlu> будет в свою очередь сделан HTTP запрос на другой мой скрипт, который ovlu> запишет в базу дополнительные данные о транзакции. И так несколько раз. ovlu> Вызывающий скрипт ждет пока данные в базе не обновятся. ovlu> В общем шаг номер 3 может быть достаточно долгим. Хочется делать все это ovlu> в background. Интересует такое, если скрипт, запущенный под Apache на ovlu> Linux после того как отдал <html></html> будет еще что-то делать, ovlu> броузер будет показывать, что страница грузится. Что нужно сделать, ovlu> чтобы закрыть соединение с клиентом и дальше работать в background? ovlu> У меня есть 2 идея на эту тему: ovlu> 1. Как то Закрыть STDOUT; ovlu> 2. Сделать fork() и пусть дите себе играется :). ovlu> Скрипт использует CGI + CGI::SSI с планом перехода на Apache::Registry + ovlu> Apache::SSI. Возможно ни один из вышеуказанных вариантов невозможен. ovlu> Тогда, как бы такое сделать, а? Под mod_perl можно унести эту операцию в LogHandler, который запускается после того, как контент отдан клиенту. Браузер уже закончит транзакцию с сервером, но апачевское дите будет занято, пока оный хендлер не отработает. Зато этих дворников будет не более чем по одному на апачевское дите. Если CGI - то аккуратный fork, что сразу освободит не только браузер, но и апач, но зато чревато быстрым пложением отфоркнутых детей, если у тебя большая нагрузка, и они не успевают. -- Artem Chuprina E-mail: ran@ran.pp.ru Programmer FIDO: 2:5020/371.32 Memonet Ltd. Phone: +7-095-284-1356 --- slrn/0.9.6.3-as (Linux) * Origin: AKA с подствольным плюсомётом (2:5020/371.32) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/737651c1b4bf8.html, оценка из 5, голосов 10
|