powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / ie8 setinterval траблы
19 сообщений из 19, страница 1 из 1
ie8 setinterval траблы
    #38071768
forward12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Сделал на сайте вывод времени сервера ежесекундный, а также обновление прайс листа ежесекундное.
На ФФи хроме работает нормально, а на эксплорере срабатывает ровно один раз и даже обнолвение страницы не дает результат
Код: javascript
1.
2.
3.
4.
$(document).ready(function () {
          setInterval(stakan, 1000);
          setInterval(geto, 1000);
    });


А нужно чтобы обязательно под эксплорером работало.
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38071810
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пару моментов:
- где код функций stakan и geto? - проблема явно не в установке интервалов, а работе этих функций;
- я бы не хотел попасть на такой сайт, который раз в секунду будет пытаться скачать что-то откуда-то и полностью грузить канал;
- с такой периодичностью обновление часов не делается - это глупость ... есть несколько вариантов решения, но сразу встречный вопрос: чем таймер на клиентской машине хуже серверного таймера??? - понимаю, что надо быть уверенным, что клиент работает правильно с точки зрения разработчика, но решать это можно весьма просто: раз в определенное время (30-60 секунд) проверять синхронизацию, хотя даже это достаточно глупо - ни сама отсылка, ни тем более получение "сигнала" не будет равно 1 секунде - из-за однопоточности javascript. Как альтернатива, весьма эффективным решением может являеться создание сокета с сервером, где сначала проверяется его качество, скорость, задержки, вырабатывается расписание синхронизаций - либо новыми средствами html5, либо флешем;
- не знаю, не смотрел, сколько параллельных асинхронных запросов позволяет сделать ИЕ9, но у предыдущих было ограничение в 2 потока, поэтому очевидна проблема в том, что прайс не успевает так быстро сформироваться на сервере и доставиться, а уже интервалом делается следующий запрос; кстати, любой навигатор это ждет - насколько бы хорошим не был канал, но весьма очевидно, что при наличии нескльких подключенных клиентов сервер рано или поздно не будет успевать, и даже если возможных запросов будет достаточно много (как у Хрома), то они будут сами забивать канал и "мешать" друг другу, и все равно код "встанет".

Если честно, то я вообще не понимаю, чем ты руководствуешься, делая такой механизм, изначально мягко говоря не очень правильный с точки зрения рациональности и необходимости, но уверен, что ты идешь не по правильному пути. Насчет таймера сказал, а по поводу прайса - ты уверен, что клиенту он нужен раз в секунду??? - но даже если так, то почему его не пытаться обновить уже после прихода ответа от сервера? - не через setInterval, а через setTimeout.
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38071821
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forward12а также обновление прайс листа ежесекундное.
Как минимум ты должен однократно запустить обновление через секунду, а уже по окончанию оного принимать решение когда делать следующее и снова пускать однократный таймер. Т.е. не setInterval, а строго setTimeout.
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38071822
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck- не знаю, не смотрел, сколько параллельных асинхронных запросов позволяет сделать ИЕ9, но у предыдущих было ограничение в 2 потока,в ИЕ8 - 6 штук.
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38071824
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечIDVsbruck- не знаю, не смотрел, сколько параллельных асинхронных запросов позволяет сделать ИЕ9, но у предыдущих было ограничение в 2 потока,в ИЕ8 - 6 штук.
С одной страницы? Реально отправляются или просто создается видимость?

Если мне память не изменяет, то пока предыдущий аякс-запрос не обработался, следующий тупо в очереди торчит. Т.е. для скрипта он якобы ушел, а на деле - фиг. Но это через XMLHTTPRequest и не вчера было.
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38071845
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, действительно, в IE7 их стало 4, а в IE8-9 - аж 6, как и у большинства других браузеров. Неплохое исследование нашел тут (второй столбец - количество конкурирующих запросов на один хост).

В любом случе - проблема так или иначе с такой частотой вылезет.
Почему работает в одних и не работает в ИЕ (кстати, мы не знаем, в какм ИЕ идет тест): думаю, дело в механизме формирования очередности - одни браузеры ждут очередности отправить запрос, другие виснут или вызывают исключение при всех занятых соединениях. Хотя в jQuery вроде какой-то пул сделан, но черт его знает, как он поведет себя при такой лавине запросов.
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38071881
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то помнится, что IE7 максимум 2 параллельных ajax-запроса держал, остальные просто в очередь становились. По теме - вызывается один раз функция, на колбеке выводит что надо и делает следующий запрос и так по кругу (ответ с сервера может и через 30 секунд придти, зависит от нагруженности оного и интернет канала, поэтому "вывод времени сервера ежесекундный" ниачом, если это не локалхост).
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38071904
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
))) Даже для локалхоста выдача ответа "сервера" (надо полагать, "прайс" - это некий ответ сервера - текст, json, xml или другое, иначе смысл теряется вовсе), который формируется на базе загружаемого файла или БД и размером хотя бы несколько десятков килобайт - от сложности - вполне может не вложиться в секунду, даже на вполне приличной машинке.

st_stЧто-то помнится, что IE7 максимум 2 параллельных ajax-запроса держал, остальные просто в очередь становились.
Тоже так считал, но при поиске вменяемого и доверительного ресурса неоднократно попадал на упоминание, что у ИЕ6 было 2 возможных конкурентных запроса к одному хосту, а у ИЕ7 - 4. Не факт, конечно, но ...
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38072086
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck))) Даже для локалхоста выдача ответа "сервера" (надо полагать, "прайс" - это некий ответ сервера - текст, json, xml или другое, иначе смысл теряется вовсе), который формируется на базе загружаемого файла или БД и размером хотя бы несколько десятков килобайт - от сложности - вполне может не вложиться в секунду, даже на вполне приличной машинке.

st_stЧто-то помнится, что IE7 максимум 2 параллельных ajax-запроса держал, остальные просто в очередь становились.
Тоже так считал, но при поиске вменяемого и доверительного ресурса неоднократно попадал на упоминание, что у ИЕ6 было 2 возможных конкурентных запроса к одному хосту, а у ИЕ7 - 4. Не факт, конечно, но ...

Проверил сейчас на WinXp и IE7 стандартном, если два запроса висят в ожидании, то третий тоже висит ждёт. Если один запрос висит, то второй нормально отрабатывает.
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38072884
forward12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем за активность.
Нашел в сети обсуждения подобной траблы
http://stackoverflow.com/questions/3426510/problem-with-ie-and-setinterval-not-refreshing-updating
Дело в кэшировании эксплорера. Я его сейчас на уровне пхп код отключил. Попробую еще парочку из предложеных выше вариантов.
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38072898
forward12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,
проект это эмулятор аукциона. Т.е. у всех пользователей должно быть четко одно время. И каждую секунду обновляется таблица заявок, и пользователи должны видеть ее постоянно обновляемую. Ваши рекомендации касательно сеттаймаут обязательно проверю.
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38073123
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ты делаешь серьезный проект, то и решение должно быть серьезным ... а аукцион (!), где люди выкладывают реальные деньги, сделанный на setInterval - это, извини, погное г..но! Более двух лет разрабатывал онлайн-мультипользовательское казино, поэтому хорошо разбираюсь в теме. Тебе надо копать в сторону как минимум Comet - Server Push, чтобы не клиент теребил сервер на предмет изменений, а сервер сам обновлял клиентов при изменении положения. Однозначно вижу сокет.

А по поводу таймера рекомендации те же: таймер на любой пользовательской машине ничем не уступает серверному, посылать надо не сам "сигнал точного времени", а только синхронизатор-перестраховщик. Ведь "час М" на сервере по окончании таймера случается не тогда, когда прийдет запрос от клиента с требованием "у меня закончилось время, я выиграл", а окончание таймера на сервере и последний бит самого последнего клиента до завершения времени. Поэтому задачу тут надо не решать "в лоб", так как даже с сокетом время сервера при отображении у клиента будет искажено из-за его удаленности, причем, клиент, у которого, скажем, стоит на закачке uTorrent, получит время последним. Абсурд? При твоем решении абсурд в квадрате. Подходи к вопросу с другой стороны - какие есть риски и как сделать работу комфортной. Баланс между ними и будет правильным решением. В зависимости от масштабности проекта, конечно, - в случае реально претендующей на аукцион фигни, но без крупных вложений - я бы решал проблему примерно так: при заходе клиента на сайт к его запросам цеплял бы время клиента и на основе десятков запросов вычислял средневзвешенное время поправки времени (при ставке делал бы это даже с таймером или вероятней через сокет), а секундомер делал бы локальным, с поправкой на задержку. Этого можно было бы не делать, если бы не специфика аукциона - каждый желающий купить пытается сделать ставку в самый-самый последний момент и тут может возникнуть 2 ситуации: а) у меня очень быстрый инет и я послал запрос за 200 млсек до окончания с пингом в 20 млсек, а конкурент - за 400 млсек с пингом в 300млсек - должен был выиграть я, но выиграл он; б) я делаю запрос на 100 млсек до окончания, а мой пинг 120 млсек - я должен был победить, но проиграл. Естественно, это не вполне объективно - на этом могут строиться схемы обмана, но суть остается такой: подобные вопросы достаточно сложны, и решать их "в лоб" категорически нельзя, надо использовать наработанный в этой сфере опыт, притягивать математику, анализ, социологию, статистику. А подобного г..на на таймерах и интервалах в инете пруд пруди ... и их удел?

P.S. Как-то при показе одной игры в моем казино (флеш, сокеты, Java) не непосредственно заказчик, а вершина всего этого "мероприятия" - большая шишка - тоже решил попробывать. Я был очень польщен похвалой за то, что, хотя ему доводилось играть очень во многих инет-казино (деньги все-таки вкладывал), но такой отзывчивости на действия партнеров по игре он не видел. Мне вдвойне приятно было за то, что диссертаций по этой теме я не защищал, все сделано было по наитию и собственному понимаю, но, естественно, после основательного штудирования инета по этому вопросу. Этот вопрос как раз касался таймеров и аналогичной работе сервера с клиентом.
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38073134
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forward12Т.е. у всех пользователей должно быть четко одно время.
Ну хорошо, ты получил отклик от сервера, в котором сервер сообщил, что "сейчас у меня 00:00".

Так сейчас - это когда? 10 мс назад? 100 мс? Или 2.5 сек назад?

Ну не важно, допустим +/- пару сек нас устраивает. Ок.
Но что дает ежесекундное обновление сего ничем неточного времени? Оно точнее станет? Нет. А потенциальных проблем целый ворох. Особенно, если бездумно использовать setInterval. Хорош аукциончик получится для тех, у кого связь не фонтан.
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38073235
forward12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще раз пасибо за обширные коменты. Инфа пригодится когда буду писать собсвенный движек для аукциона или казино.
А пока я пишу ЭМУЛЯТОР аукциона, на нем будет торговать два моих робота. Там вообще не будет клиентов. Мой эмулятор это только клон закрытого аукциона, до которого у меня и доступа даже нет. А есть только хтмл страницы. Так что мне все нюансы выиграша пока не нужны, равно как и скорости и акуратности. Абы на глазок раз в секунду обновлялось.
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38073241
forward12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,
касательно фразы полное г...
Земляк, вообще никаикх обед за фразу. Надесь ты посмешся.
У этого аукциона на одном лоте цена идет на сотни милионов грн. В оригинальном коде аукциона нет намеков на сокеты там банальный сетинвервал, с частотой в секунду. Вот такая петрушка. Название конторы сказать не могу, договор обязует хранить тайну. Но у них работает код. Правда он на джейквери, а я его почти не знаю, надо видать его осилить.
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38073251
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит там первым делом проверяется, если уже апдейт идет, то новый не запускать. А если не проверяется - то хоть так, хоть сяк - код писал индус. Но ведь если на тачке нет крыши - не беда, можно поднатужиться и никогда не попадать на ней под дождь! Тогда проблема никогда себя не проявит ;)
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38073274
forward12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.w3schools.com/js/tryit.asp?filename=tryjs_setinterval2
вот нашел код. Работает сет интервал в эксплорере, возможно у меня иксемель запросы вызвают некие колизии, уберу один иксемель запрос, тот который серверное время берет и мне это не критично.
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38073348
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, понятно. Раз эмулятор и тесты, то можно и хултурку ... ))))))
...
Рейтинг: 0 / 0
ie8 setinterval траблы
    #38073914
forward12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,
да я максимально упростил функционал. Мне главное чтобы у контролов был идетичный код, ИД, классы и тд. Чтобы потом робот мог по них кликать.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / ie8 setinterval траблы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]