Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 885

/ вопрос открыт /

Уважаемые эксперты доброго времени суток!
Раньше никогда толком не работал с сетями, но сейчас появилась необходимость решить один вопрос..
И так:
Необходимо: построчно получить ответ на GET запрос серверу. Скрипту PHP передаются пераметры и начинается продолжительная "работа", в процессе которой он выводит строку статуса. Выполнение всей "работы" может занять до получаса, а то и дольше. Ввиду этого воспользоваться каким либо HTTP клиентом (idHTTP и т.п.) не получится, надо выводить реальный стутус работы, а если я все правильно понял с HTTP, он (клиент) будет ждать полного выполнения "работы". Получается, нужно использовать TCPClient и читать выводимую скриптом информацию. А вот с этим возникли "небольшие проблемки".
Буду благодарен за любую информацию, совет, а особенно за маленький примерчик.

Spawn Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Spawn (статус: 1-ый класс)
Вопрос отправлен: 2 сентября 2007, 19:16
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 3 сентября 2007, 11:07; участников в обсуждении: 2.
Spawn

Spawn (статус: 1-ый класс), 2 сентября 2007, 21:32 [#1]:

Немного уточню свой вопрос.. Необходимо сделать клиентскую программу которая будет передавать параметры и получать статус выполнения "работы" от скрипта. Насколько, я понял это нужно реализовывать с помощью TTCPClient. Но вот здесь мои знания очень скупы..

TCPClient.SendLn(\'Get / HTTP/1.1\')
TCPClient.SendLn(\'Host host.domain\');
TCPClient.SendLn(\'Connection: Close\');
TCPClient.SendLn(\'\');
while TCPClient.Connected do
S:= TCPClient.ReceiveLn; //вот на этом месте происходят "тормоза"

Можно но ли их как нибудь избежать? Такое чувство, что TCPClient ждет определенного объема данных, и как только получает их, сразу же передает в программу.
Вадим К

Вадим К (статус: Академик), 3 сентября 2007, 11:07 [#2]:

>>Выполнение всей "работы" может занять до получаса, а то и дольше.
Срочно менять идеологию проги. Многие серверы (Апач к примеру) прибьют ваш запрос через минут 20, а то и раньше. HTTP протокол на это не росчитан.

Получать результаты работы " реальном режиме времени" у вас не получиться. Во первых сервер кеширует данные и отдает вам небольшими кусками на несколько килобайт. Если вы имеете доступ к скрипту, то можно вставить комаду "сбрасывать буфер" (Flush), но современные серверы её игнорируют. Также кешировать ваши ответы будет подсистема сетевого ввода-вывода. Так что меняйте идеологию!
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:45
Выполнено за 0.02 сек.