вопрос по PHP+Java

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

вопрос по PHP+Java

Сообщение Sirik » 14.06.2010 (Пн) 15:54

На сервере есть скрипт, который принимает файлы небольшого размера (~10Kb, картинки) и все время накрывает файл, который хранится на сервере "свежей" копией.

Так же есть html страничка, которая через определенный интервал обновляет полученную картинку, путем запуска скрипта на java

все работает отлично когда клиент и сервер находится в локальной сетке, как только сервак находится, скажем так, далеко, то картинки "не успевают" дойти и естественно в лучшем случае отображаются некорректно.

кв чем собственно вопрос: как на самой страничке реализовать проверку пришел ли полный файл, если нет, то хотя бы какая его часть передалась?
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Re: вопрос по PHP+Java

Сообщение Sirik » 14.06.2010 (Пн) 16:01

имхо, самая главная задача отловить момент начало загрузки и конца. конец ищется просто: окончание работы скрипта, а вот как отловить начало?

пример скрипта:
Код: Выделить всё
<?php

$login = $_SERVER["HTTP_UPLOAD_LOGIN"];
$pass = $_SERVER["HTTP_UPLOAD_PASS"];

//локальный сервер
//$main_dir = '';

$pic_dir = $main_dir.'pictures/';

copy($_FILES['file']['tmp_name'],$pic_dir.'1.jpg');

?>
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: вопрос по PHP+Java

Сообщение Хакер » 14.06.2010 (Пн) 16:24

Sirik писал(а):скрипта на java

Наверное JavaScript а не Java? Это совершенно разные вещи.

то картинки "не успевают" дойти и естественно в лучшем случае отображаются некорректно.

Глупость. Никто никого не торопит. Поэтому никто не может опоздать. Проблема в другом.

3) Вместо copy надо использовать move_uploaded_file.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: вопрос по PHP+Java

Сообщение FireFenix » 14.06.2010 (Пн) 16:31

PHP вроде файлы вначале сохраняет в темп, а потом работает из темпа... т.е. проблем с прямой докачкой не должно быть...
Код: Выделить всё
<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
        $name = $_FILES["pictures"]["name"][$key];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
    }
}
?>

Код: Выделить всё
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    print "File is valid, and was successfully uploaded. ";
    print_r($_FILES);
} else {
    print "Possible file upload attack!  Here's some debugging info:\n";
    print_r($_FILES);
}
?>

так же можно покурить is_uploaded_file
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Re: вопрос по PHP+Java

Сообщение Sirik » 14.06.2010 (Пн) 17:30

Дело в том, что через скрипт загружаются картинки на сервер допустим с частотой 1 раз в секунду. И как бы неизвестно загрузиться ли картинка именно через секунду.
Так вот, допустим картинка загрузилась через 1.2 сек, в тоже время пошла 2 картинка и загрузилась она на процентов 30. В своей страничке я обновляю фрейм раз в секунду и получается, что я покажу недогруженную картинку

Есть мысль вот какая, по окончания работы скрипта загрузки писать куда-то (мб даже в табличку), что картинка загрузилась в такое-то вот время, а на самой страничке смотреть когда именно произошло обновление. С другой стороны, я же могу с помощью JavaScript это проверить? Возможно ли в страничку сделать так скажем линк на php скрипт проверки на стороне сервера для данной проверки?
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: вопрос по PHP+Java

Сообщение Хакер » 14.06.2010 (Пн) 17:40

Дело в том, что через скрипт загружаются картинки на сервер допустим с частотой 1 раз в секунду. И как бы неизвестно загрузиться ли картинка именно через секунду.

Не так надо говорить.

Надо говорить: upload-запросы отправляются с частотой 1 Гц. Потому что именно это правда, а не всё остальное. Всё остальное — с какой частотой запросы приходят на сервер и обрабатываются, и более того, в каком порядке (ибо они могут обрабортаться не в том порядке, в каком отправлялись) — это уже тебе неизвестно.

В общем и целом: меняй кривую архитектуру на правильную.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: вопрос по PHP+Java

Сообщение FireFenix » 14.06.2010 (Пн) 17:59

Sirik писал(а):Возможно ли в страничку сделать так скажем линк на php скрипт проверки на стороне сервера для данной проверки?

Тут тока через костыль...

1) файловый
Т.е. где-то на сервере лежит файл со списком файлов и их статусами... После каждого запроса или обновления парсить файлег и получать или обновлять статус

2) БД... Тот жий принцип...
Есть табличка с файликами у которых есть столбец статус и по той же программе... js -> php -> бд -> ответ в зависимости от статуса

Но так делать совсем не правильно! Лучше исходить из самой задачи... Если нужно нормальное решение - задачу в студию! :)
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Re: вопрос по PHP+Java

Сообщение Sirik » 14.06.2010 (Пн) 18:11

С клиентских машин отправляются картинки с частотой 5 раз в секунду (снимки с webcam). Нужно с любой точке мира видеть эти снимки. для локальной сети - все работает изумительно, для глобальной нет, к сожалению.

2 Хакер: а как такое может произойти? если я картинки шлю по очереди?

зы: конечно можно было бы написать свой минисервер на тоже vb.net, но на локальном сервере динамический IP
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: вопрос по PHP+Java

Сообщение Хакер » 14.06.2010 (Пн) 18:17

если я картинки шлю по очереди?

Если бегуны начали забег в одном порядке, где гарантия, что они к финишу прибегут в том же порядке?

Тупо слать картинки с фиксированной частотой на сервер — худшее, что можно придумать.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: вопрос по PHP+Java

Сообщение FireFenix » 14.06.2010 (Пн) 18:20

Почему бы не использовать обычную потоковую модель? Вроде щас модно видео транслировать :)

Вообще можно сделать на сервере типа стека и чистить его раз в день, или когда запрос к последней картинке был меньше некоторого количества часов (чистку можно повесить на крон к примеру или даже запускать чистку после прихода n картинок, ведь как-то они загружаются :) )
Т.е. JS посылает дату или ID последнего загруженной картинки.... Если в бд имеется id+1 или большая дата картинки, то отправляем клиенту
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Re: вопрос по PHP+Java

Сообщение Sirik » 14.06.2010 (Пн) 18:26

я шлю с частотой, допустим, 5 раз в секунду, но если происходит задержка - то я жду окончание отправки предыдущего файла и только потом отправляю следующий

на счет стека...можно хранить сам стек, а картинки удалять допустим так, чтобы на сервер лежали только 3 "свежие"

Почему бы не использовать обычную потоковую модель? Вроде щас модно видео транслировать
а пример можно?
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: вопрос по PHP+Java

Сообщение FireFenix » 14.06.2010 (Пн) 18:39

Sirik писал(а):точнее обновить то я могу, но как проверить что уже пришла?

Нам незачем обновлять, мы проверяем есть ли добавленные, чтобы избежать замены картинок (если юзаем в виде стека)

уже пришла?

Код: Выделить всё
if ($_FILES["pictures"]["error"][0] == UPLOAD_ERR_OK)
{
        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
        $name = $_FILES["pictures"]["name"][$key];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
}

или is_uploaded_file

Sirik писал(а):а пример можно?

Я не знаток, но знаю что можно :)

UPD: ещё чуток поисков и чуть ближе к цели :)
http://www.wikihow.com/Stream-Your-Webcam
http://www.nchsoftware.com/broadcam/screenshots.html
http://www.ustream.tv/get-started
http://dorgem.sourceforge.net/
http://www.willingsoftware.com/help/HTTP%20Server.shtml
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Re: вопрос по PHP+Java

Сообщение Sirik » 15.06.2010 (Вт) 21:01

спс за советы)
2 FireFenix, буду технические вопросы - могу обращаться? ;)
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: вопрос по PHP+Java

Сообщение FireFenix » 15.06.2010 (Вт) 21:59

Sirik писал(а):спс за советы)
2 FireFenix, буду технические вопросы - могу обращаться? ;)

Да, без проблем... Помогу чем смогу :)
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Re: вопрос по PHP+Java

Сообщение Sirik » 16.06.2010 (Ср) 13:53

появилась такая вот идея, не знаю кривая ли она, но все же:
клиент
отправляет картинку с определенным интервалом как раньше


сервер
1 скрипт
принимает картину и пишет в БД время последнего изменения + счетчик картинок (например: img & счетчик, время)
2 скрипт
проверяет время и индекс картинки, которую он "отдавал" в последний раз: если они отличаются, то возвращает рандом число, если нет - то пусто

страница просмотра состоит из ссылки на картинку и скрипта (JavaScript), который выполняется каждую секунду и делает следующее:
присваивает адрес картинке ответ от 2 скрипта с сервера

сейчас есть только один насущный вопрос, как реализовать вызов 2 скрипта (сервера) с страницей?

сейчас вот так вызывается рандом адрес картинки:
Код: Выделить всё
img.src = img_src + "?seed=" + Math.round(Math.random()*10000);
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: вопрос по PHP+Java

Сообщение iGrok » 16.06.2010 (Ср) 14:31

1) На сервере скрипт #1, получающий картинку, копирующий её в нужное место с рандомным именем, и обновляющий адрес картинки либо в базе, либо в каком-то файле.

2) На сервере скрипт #2, отдающий по запросу адрес последней картинки из базы или из какого-то файла.

3) На странице просмотра таймер с процедуркой, через AJAX вызывающей второй скрипт, получающей от него адрес последней картинки, и если он отличается от текущего img.src - заменяющей img.src на него.

Для реализации последнего либо смотри XMLHttpRequest (да хоть в википедии, он там неплохо описан), либо бери сразу jQuery, она попроще, хоть это и всё равно, что из пушки по воробьям.

Всё.
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: вопрос по PHP+Java

Сообщение Хакер » 16.06.2010 (Ср) 14:39

Ну вы блин даёте. Таймеры.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: вопрос по PHP+Java

Сообщение iGrok » 16.06.2010 (Ср) 14:51

Хакер писал(а):Ну вы блин даёте. Таймеры.

Хакер, скажи, а как ещё можно узнавать об обновлении чего-то удалённого из браузера?
Сокетное соединение что ли открывать?

З.Ы. Да, таким способом обновлять картинку 5 раз в секунду не получится. Тут уже нужно действительно смотреть в сторону потоковой трансляции видео.
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: вопрос по PHP+Java

Сообщение Хакер » 16.06.2010 (Ср) 15:16

Зачем рвать соединение и регулярно его заново устанавливать, если можно один раз установить и слушать?

Я бы сделал так: клиент сначала открывает соединение с сервером и шлёт что-то вроде «Хочу отправить новую картинку, готов принять»? На что сервер отвечает либо «Нет, не готов, иди гуляй, вернёшься через N секунд», либо «Да, с радостью приму, выделяю тебе ID для новой картинки, начинай заливать, у тебя N секунд, чтобы начать».

В первом случае поведение клиента понятно, во втором — клиент вносит полученный ID в скрытое поле файл-формы (если используется именно она) и делает сабмит этой формы.

До сабмита и после сабмита сервер регулярно в рамках установленного соединениё шлёт клиенту посылочки вроде «Жду начала загрузки, осталось X секунд», «Идёт загрузка, успешно загружено Y процентов», «Загрузка ID успешно завершена».

Опционально, можно прикрутить к этому обработку оборвавшихся аплоадов.

Думаю понятно, что смысл такой архитектуры — не дать клиентам себя (сервер) захлебнуть аплоадами. Запросив загрузку, один из клиентов получает эксклюзивное право (на ограниченное время — N секунд) делать заливку. Остальные в течение этого промежутка будут получать «Нет, не готов, иди гуляй, возвращайся через ...». Если клиент воспользовался правом, начав загрузку, он получает всё информацию о ходе загрузке (главным образом — скорость рагрузки), из чего он может делать адаптивную подстройку частоты обновлений картинки на сервере. Если клиент так и не начал загрузку в установленный промежуток, его право на загрузку аннулируется и будет отдано первому, кто снова запросит загрузку.

Самое главное, что клиент узнаёт, когда завершилась загрузка. И новая загрузка пойдёт не раньше, чем завершилась предыдущая. ID загрузки нужен для того, чтобы определять, что именно тот клиент, которому дали право делать загрузку делает её. ID должен генерироваться не по порядку, а по случайной закономерности и быть достаточно длинным, чтобы его было трудно подобрать.

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

Это минимум для задачи постоянного обновления файла неизвестной структуры на удалённом хранилище. Я бы сделал протокол ещё более сложным, чтобы сервер и клиент могли лучше контролировать происходящее.

Хотя вообще, здравая мысль состоит в том, что если это картинка с камеры, то лучшим решением будет находить разницу между предыдущим и текущим кадром, и слать её (разницу).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Re: вопрос по PHP+Java

Сообщение Sirik » 16.06.2010 (Ср) 15:36

я видимо немного не правильно нарисовал ситуацию:
есть клиент, который шлет картинки на сервер и есть клиенты, которые смотрят их
с отправкой файлов все решено и отлично работает, реализовано как Хакер написал, а вот с просмотром - никак

отправка реализована программой (vb.net), просмотр естественно через браузер

нашел cтатью, там немного другой способ описан, 2: iGrok мб этот метод проще?
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: вопрос по PHP+Java

Сообщение iGrok » 16.06.2010 (Ср) 17:08

Хакер! Но я-то имею в виду задачу ПОЛУЧЕНИЯ файла с сервера, а не отправки!
С отправкой всё понятно, никаких таймеров, только прямое сокетное соединение.

А вот что делать с получением? Как тонкому клиенту узнать, что картинка на сервере обновилась, кроме как проверять это по таймеру?

Sirik:
То, что там описано, не особо подходит. Подходить оно начнёт только тогда, когда ты приделаешь к этому какой-то способ получать информацию с сервера без перезагрузки страницы. А как только ты это сделаешь - это станет ровно тем же способом, который я описал.
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: вопрос по PHP+Java

Сообщение Хакер » 16.06.2010 (Ср) 17:09

А вот что делать с получением? Как тонкому клиенту узнать, что картинка на сервере обновилась, кроме как проверять это по таймеру?

Да в принципе так же. Установили соединение и ждём сигналов от сервера.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: вопрос по PHP+Java

Сообщение iGrok » 16.06.2010 (Ср) 17:55

Хакер писал(а):Да в принципе так же. Установили соединение и ждём сигналов от сервера.

Я понимаю, что в основе - та же схема. Но как можно установить постоянное соединение в данном случае? Когда в распоряжении только средства html и javascript?

Я вижу два варианта:
1) Апплет (ActiveX / Java / Flash).
2) Вот это http://habrahabr.ru/blogs/webdev/41223/ или его подобие.

Первое - это уже не js. Второе - это всё равно фактически опрос сервера по таймеру.

Ты знаешь ещё способы? Поделись, плиз.
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: вопрос по PHP+Java

Сообщение Хакер » 16.06.2010 (Ср) 17:56

Когда в распоряжении только средства html и javascript?

XmlHttpRequest?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: вопрос по PHP+Java

Сообщение iGrok » 16.06.2010 (Ср) 18:27

Хакер писал(а):
Когда в распоряжении только средства html и javascript?

XmlHttpRequest?

Ммм.. Правильно ли я понял:
Ты предлагаешь
1) Сделать запрос через XmlHttp, и ждать ответа от сервера. Если запрос отваливается по таймауту, либо если мы получили ответ - делать новый запрос.
2) Сервер, при обработке конкретно этого запроса должен передавать ответ только тогда, когда информация на сервере реально обновилась, а во всех остальных случаях просто держать соединение без ответа.
Или я опять не так понял?

Просто как установить реально постоянное соединение средствами XmlHttpRequest лично я не представляю.

Если так, то чем эта схема лучше, чем то, что предлагаю сейчас я? Всё-таки надо как-то

З.Ы. Должен уточнить, что под "таймером с процедуркой" как раз и имелась в виду отправка запроса, ожидание ответа, и отправка нового запроса только после прихода(или неприхода по истечению таймаута) ответа на предыдущий. Только сервер не смотрит, обновился файл, или нет, а просто отдаёт текущий адрес. Сверка адресов уже идёт на клиенте, и картинка обновляется только если адрес изменился.
label:
cli
jmp label

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: вопрос по PHP+Java

Сообщение djalex777 » 16.06.2010 (Ср) 18:33

Хакер писал(а):XmlHttpRequest?

Ерунда, никакого постоянного соединения это не позволяет делать, если ты про это :) Всё правильно сделано - идёт опрос сервера по таймеру либо коннект и ожидание ответа и только после этого опять новый запрос. Ещё есть вариант через flash (уже с постоянным соединением) - коннект к специальному порту и трансляция. Вот с flash самый нормальный вариант. Не понимаю проблемы? Всё же даже в этой теме написано.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: вопрос по PHP+Java

Сообщение Хакер » 16.06.2010 (Ср) 18:34

Если запрос отваливается по таймауту, либо если мы получили ответ - делать новый запрос.

Откуда возьмётся таймаут? Разве в поведение XmlHttpRequest вшит какой-то таймаут, после достижения которого соединение насильно разрывается?

а во всех остальных случаях просто держать соединение без ответа.

Без ответа — это не совсем хорошо. Лучше дежурный ответ «Ничего нового» с некоторой периодичностью.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: вопрос по PHP+Java

Сообщение djalex777 » 16.06.2010 (Ср) 18:38

Хакер писал(а):Откуда возьмётся таймаут? Разве в поведение XmlHttpRequest вшит какой-то таймаут, после достижения которого соединение насильно разрывается?

Представь себе - именно так и есть.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: вопрос по PHP+Java

Сообщение Хакер » 16.06.2010 (Ср) 18:44

Proof-линк?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: вопрос по PHP+Java

Сообщение iGrok » 16.06.2010 (Ср) 18:57

У самого XmlHttpRequest - нету.

Но...
http://msdn.microsoft.com/en-us/library/cc304105.aspx писал(а):If you set an XMLHttpRequest time-out value that is larger than the network stack's time-out value, the network stack will time out first and the ontimeout event will not be raised.

Т.е. через какое-то (хуже того - никому толком не известное!) время соединение всё равно разорвётся.

Да даже если бы и не было. Такая схема требует модификации сервера. Даже если таймаута нет у XmlHttpRequest, он есть у php. А значит сервер, обрабатывающий такие запросы, придётся писать самому.
label:
cli
jmp label

След.

Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

    TopList