AJAX & PHP (конкурирующие запросы)

  • Автор темы Автор темы Lirik
  • Дата начала Дата начала

Lirik

Новичок
В двух словах ситуация такая, есть банально страница , пользователь естественно может открыть сколько угодно их, суть в том что с каждой из них уходит AJAX запрос, которому в результате сбрасываются специфичные данные накопленные во временном буфере, после этого буфер очищается(чтобы не копить кучу ненужных данных), проблема в том, что если с одной страницы придет запрос раньше чем с другой, то соответственно буфер сбросится и на другой странице пользователь не увидит ничего, кто как решает данную проблему? первой моей мыслью было посылать вместе с запросом какой-либо уникальны хеш, зависящий от окна или как-то так, но вроде костыль, и к тому же придется держать на каждое окно по буферу, что не хочется делать, т.к память уйдет быстро, буфер достаточно большой бывает. Также думал держать эти уникальные хеши в памяти и сбрасывать буфер только когда придут все запросы от всех уникальных хешей(читай окон в браузере), или например если окно закрыли то если больше 10 секунд например нет запроса от него, удалить данный хэш из памяти(получается что-то вроде списка идентификаторов как в Comet при рассылке). как поступить в данном случае?
 
первой моей мыслью было посылать вместе с запросом какой-либо уникальны хеш, зависящий от окна или как-то так, но вроде костыль, и к тому же придется держать на каждое окно по буферу, что не хочется делать
В таком случае проблема решается отказом от новомодного аякса. По всему выходит он там вам совсем не нужен.
 
С.
К сожалению нужен. по другому никак, ну если не делать Comet, тогда эта проблема решится просто тупой рассылкой буфера во все каналы.
 
Аякс "нужен. по другому никак", но обрабатывать асинхронность аякса "не хочется". Вот ведь дилема, блин!
 
С.
Язвить и я могу. я четко описал, что проблема не в асинхронности, а в том как распределить инфу между запросами.
 
я четко описал, что проблема не в асинхронности, а в том как распределить инфу между запросами.
А почему логическая связь с информацией в запросах теряется? Потому... что... БИНГО!.. аяксовские запросы шлются асинхронно от основного запроса!
 
Запрос, который строит страницу, из которой шлются аякс-запросы, которые не может связать Lirik с теми данными, которыми он располагал, когда он отвечал на "основной" запрос.
 
А если информация пришла позже того, как был выполнен этот "основной запрос"?
 
Lirik
классическое решение - очищать буфер только после того, как пользователь явным образом среагировал, дав понять системе, что он прочитал поступившие сообщения.
 
С.
Никакого основного запроса нету, хватит язвить уже. Связь теряется т.к пользователь может открыть несколько вкладок и из одной из них точно уйдет запрос раньше другого и буфер сбросится после вывода информации. кроме С. у кого-нибудь может будут идеи?просто интересно или не, только язвить и говорить что кто-то не понимает AJAX и бла-бла-бла...
 
Фанат
Вариант, подумаю. спасибо. Правда есть тонкий момент, эти сообщения не совсем какие-то уведомления пользователю, т.е он может открыть страницу и ничего не щелкать, просто смотреть что и как изменяется. В куки тоже писать не хочется, т.к объем информации большой просто.
 
Чота сложно я ниче не понял. Но по идее так - храним последние 10 (100, 500) событий, при первом открытии окна отдаем все, дальше аяксом передаем id последнего и подгружаем с этого момента. Не?
 
fixxxer
Буфер этих событий после того как отдает инфу очищается.тут просто вся загвоздка в нескольких окнах именно. ладно попробую реализовать как предлагали Фанат или fixxxer, если не получится проще будет сделать на Comet наверное по-нормальному
 
если окно закрыли то если больше 10 секунд например нет запроса от него, удалить данный хэш из памяти
То есть подразумевается, что запрос идёт с периодичностью не реже, чем раз в 10 секунд? Тогда просто хранить последние за эти 10 секунд :)
 
vasa_c
Да нет, там немного сложнее =) уже решил так-то) всем спасибо.
 
Сверху