Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сигнал от Apache скрипту CGI об обрыве связи 
:(
    Опции темы
DProf
Дата 27.10.2014, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 28.9.2012

Репутация: нет
Всего: 1



Добрый день!

Apache+CGI. По запросу из JS xml http request -ом запускается на выполнение тяжелый cgi скрипт на perl. Он может работать очень долго (до 5 минут и больше). Задача - прервать его выполнение в случае, если пользователь отменил запрос (xml http request abort) или даже просто закрыл страницу/браузер.

Как в скрипте отловить обрыв связи и тот факт, что уже никто не ждет ответа? И прервать его выполнение. А то после xml http request abort или закрытия страницы Apache НИЧЕГО не делает с порожденным запросом процессом, позволяя ему доработать до конца и ресурсов много уходит на выполнение задачи, которая уже никому не нужна.
PM MAIL   Вверх
infarch
Дата 30.10.2014, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: нет
Всего: 1



Для начала, НИКОГДА ТАК НЕ ДЕЛАЙТЕ. Ждать результат тяжелой задачи в реалтайме это для мазохистов. Правильнее так:
1. Разместить задачу. Это может быть запись в базу данных со всеми необходимыми параметрами. Получаем айди и возвращаем клиенту.
2. Клиента редиректаем на страницу ожидания. Там аджаксом периодически проверяем статус задачи по айди. По готовности редиректаем на страницу чтения результата. Если клиент не дождался и закрыл окно, перехватываем событие и аджаксом же шлем сигнал отмены.

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

Вот и все. Плюсы очевидны: веб сервер занимается только своим делом, устраняем риск обрыва при долгом ожидании, вычыслительная часть легко масштабируется на сколько надо машин. Пользователь может даже вообще закрыть браузер и потом вернуться посмотреть свои задачи. И еще много положительных моментов можно домыслить.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.1003 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.