У меня есть Delphi TWebModule Проект на базе ISAPI работает на Apache. Один из моих обработчиков событий содержит логику, которая может занять несколько минут. Я хотел бы создать отдельный процесс/поток для выполнения логики и вернуть html сразу в браузер. Для html-запросов клиентские стороны AJAX будут получать периодические обновления процесса.Нерест новой темы/процесса в обработчике TWebModule
Я попытался с помощью TThread, но найти его ждет, пока Execute код до конца, прежде чем вернуться.
Пример:
procedure Tmainweb.DoLongProcess(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
var
ProcessThread: TProcessThread;
begin
ProcessThread := TProcessThread.Create(True);
ProcessThread.Execute;
Handled := True;
Response.Content := '<html><body>Processing - would also include ajax stuff to get periodic updates</body></html>
end;
TProcessThread моя обработка нить, которая может занять несколько минут, чтобы закончить. Когда я запускаю это приложение, я думал, что управление будет продолжаться неимоверно после ProcessThread.Execute. Но это не так. Вместо этого он ждет кода в Выполнение процедуры для завершения.
Как это сделать? Как я создаю асинхронный процесс, чтобы браузер не находился в состоянии ожидания?
Разве вы не можете просто служить страницу, и пусть JavaScript/AJAX клиента инициировать длительный процесс, а? –
Угадайте, я мог бы попробовать это. AJAX для меня немного нова. И в идеале я бы не хотел, чтобы клиентский процесс инициировал этот процесс. Скорее полагаться на серверную сторону. –
Прежде чем отвечать на вопросы, важно задать несколько вопросов: 1. Является ли мое предположение, что это веб-приложение, обслуживаемое веб-сервером? 2. ISAPI или CGI? –