![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
Валерия |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 10.3.2007 Репутация: нет Всего: 8 |
Такое в компиляторе работает правильно: каждые пол секунды выводит на экран TEST<BR> А если я его юзаю как cgi то оно через 5 секунд выводит в браузер сразу всё. В php есть функция flush() которая выводит содержимое буфера а затем очищает его. А как быть тут? Нужно что бы в браузер это выводилось каждые пол секунды. |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
как то неправильно это чтобы cgi так долго работал...но все же попробуй вместо printf использовать потоки
std::endl сделает тоже самое что и flush() но это может не помочь так как если не ошибаюсь веб-сервер дожидается завершения скрипта и только после этого берет его выходные данные и выводит на страницу...хотя я могу и ошибаться. Это сообщение отредактировал(а) azesmcar - 20.4.2007, 07:46 |
|||
|
||||
Валерия |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 10.3.2007 Репутация: нет Всего: 8 |
Не выходит.
Выводит только после того как завершается работа скрипта все сразу. |
|||
|
||||
Валерия |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 10.3.2007 Репутация: нет Всего: 8 |
Еще есть какието методы?
|
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Не лучше написать функцию JavaScript и установить таймер?
|
|||
|
||||
Валерия |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 10.3.2007 Репутация: нет Всего: 8 |
azesmcar,
Нет, мне нужно именно так ![]() У меня будет while (1==1){ тут читаем из файла, и если есть новое то выводим в браузер sleep(10); } Тоесть чат без рефреша) Я на php уже такое писала, но у меня не получилось сделать слип меньше 1 секунды, т.к usleep под виндой не пашет. |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 1 Всего: 106 |
Я ведь все правильно понимаю, это CGI?
Тут просто нужно учесть, что задержки в работе CGI-скрипта, независимо от языка, не влияют на задержки в браузере. Это просто программка, которая генерирует HTML, который уже потом, после завершения, пересылает его в сеть, этот процесс зависит от HTTP-сервера, на котором CGI запускается. Чтобы фактически создать задержки с выводом в браузере, нужно все таки воспользоваться средствами инлайн-языка, например JavaScript, либо (сумасшедший вариант) пересылать HTML минуя сервер, и то, результат будет зависеть от того, генерирует ли браузер на приемной стороне страничку по факту прибытия чего-либо, либо по факту приема только всего пакета. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Спец |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 2.11.2006 Репутация: -2 Всего: -2 |
почему не правильно? Где то есть правило? Добавлено через 5 минут и 18 секунд Валерия а че правда чтоли на php эт сделать можно? Помоему процедура происходит так, браузер читает из соккета, и если данные зкончились, то ставит завершаю нуль в конце всех принятых данных, и выводит их.. а задумка с чатом не плохая.. ток технологии нынешные не позволят тебе это сделать, а если и позволят /* сомневается */ то всё будет жудко тормозить |
|||
|
||||
Спец |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 2.11.2006 Репутация: -2 Всего: -2 |
хотя, я не выспался просто.. Валерия, смотри, ты когда запускаеш exe. через веб сервер, то копия этого exe файла грузится в оперативку и выполняет (причем твой выполняется вечно
![]() |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
|
|||
|
||||
Yama |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 2.8.2006 Репутация: нет Всего: 2 |
Проблема в том, что CGI-скрипты рендерят страничку и только после рендеринга выводят ее на экран. Т.е. у тебя страничка генерится 2.5+ секунды из-за задержек, и только потом выводится на экран. Что бы сделать то, что ты хочешь, надо юзать джава-скрипт или ajax(если надо динамически подгружать данные на страницу). --------------------
Если бы строители строили дома так же, как программисты пишут программы, то первый же залетевший в форточку дятел разрушил бы всю нашу цивилизацию. |
|||
|
||||
Валерия |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 10.3.2007 Репутация: нет Всего: 8 |
Я уже юзала джаваскрипт, причем можно сказать свой аджакс писала)
Но ведь мне нужно именно то что я спросила. Раз нельзя так нельзя... |
|||
|
||||
Yama |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 2.8.2006 Репутация: нет Всего: 2 |
То, что ты хотела сделать, это раз в 5 секунд отправлять с сервера пакет клиенту, но по своей сути протокол хттп не предостовляет возможности серверу посылать запросы клиенту. Любая интерактивнасть, которую ты видишь на веб-страничках, достигается либо gif-flash- анимацией и различными запросами по таймеру или событию, которыее генерят скрипты на странице. P.S. да, и 1 совет: слезай с CGI . В мире веб-технологий CGI-скрипты - это начало позапрошлого века ![]() ![]() Это сообщение отредактировал(а) Yama - 24.4.2007, 15:54 --------------------
Если бы строители строили дома так же, как программисты пишут программы, то первый же залетевший в форточку дятел разрушил бы всю нашу цивилизацию. |
|||
|
||||
Валерия |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 10.3.2007 Репутация: нет Всего: 8 |
Я только пытаюсь залезть на него)))
А поповоду http протокола - бред. В php вот такое пашет на ура: <? for ($i=0;$i<5;$i++){ echo $i; flush(); } ?> |
|||
|
||||
Kipter |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 2.5.2006 Репутация: нет Всего: нет |
Не все серверы тебе разрешат держать постоянное соеденение с браузером, не все браузеры будут постоянно держать соеденение с сервером и т д, есть тайм-ауты и соеденение когда то будет разорвано.... может быть и такое =)
лучше постарайся обойтись средствами JavaScript и всетаки промежутками с сервера брать новые сообщения а в чат фрейм добавлять каким нить .innerHTML+= newMessage; а обновлять скрытый iframe.... а хочешь постоянные соеденения.... ну незнаю... делай чат на Flash, там есть работа с сокетами.... а серверную часть можно вообще свою на Сях написать без Apache... Yama, так какие же технологии использовать сейчас? давайте начнем дискуссию.... http://forum.vingrad.ru/forum/topic-149115...y1118874/0.html Это сообщение отредактировал(а) Kipter - 2.5.2007, 02:10 |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |