Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Background job   Artem Chuprina   19 Feb 2001 15:13:32 
Архивное /ru.cgi.perl/737651c1b4bf8.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional