|
Модераторы: korob2001, ginnie |
|
DProf |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 28.9.2012 Репутация: нет Всего: 1 |
Добрый день!
Apache+CGI. По запросу из JS xml http request -ом запускается на выполнение тяжелый cgi скрипт на perl. Он может работать очень долго (до 5 минут и больше). Задача - прервать его выполнение в случае, если пользователь отменил запрос (xml http request abort) или даже просто закрыл страницу/браузер. Как в скрипте отловить обрыв связи и тот факт, что уже никто не ждет ответа? И прервать его выполнение. А то после xml http request abort или закрытия страницы Apache НИЧЕГО не делает с порожденным запросом процессом, позволяя ему доработать до конца и ресурсов много уходит на выполнение задачи, которая уже никому не нужна. |
|||
|
||||
infarch |
|
|||
Опытный Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: нет Всего: 1 |
Для начала, НИКОГДА ТАК НЕ ДЕЛАЙТЕ. Ждать результат тяжелой задачи в реалтайме это для мазохистов. Правильнее так:
1. Разместить задачу. Это может быть запись в базу данных со всеми необходимыми параметрами. Получаем айди и возвращаем клиенту. 2. Клиента редиректаем на страницу ожидания. Там аджаксом периодически проверяем статус задачи по айди. По готовности редиректаем на страницу чтения результата. Если клиент не дождался и закрыл окно, перехватываем событие и аджаксом же шлем сигнал отмены. В это времы некий независимый сервис периодически проверяет наличие новых задач. При наличии, начинает выполнять и иногда посматривает, не произошла ли отмена. Выполнив, меняет статус. Вот и все. Плюсы очевидны: веб сервер занимается только своим делом, устраняем риск обрыва при долгом ожидании, вычыслительная часть легко масштабируется на сколько надо машин. Пользователь может даже вообще закрыть браузер и потом вернуться посмотреть свои задачи. И еще много положительных моментов можно домыслить. |
|||
|
||||
Правила форума "Perl: CGI программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |