Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Aktualizacja danych
Forum PHP.pl > Forum > XML, AJAX > AJAX
Largo
Witam,

Od pewnego czasu zastanawiam się nad pewną techniką. Otóż rozwijam dosyć zaawansowany system transakcyjny i tak się zastanawiam nad pewną funkcjonalnością, która się naprawdę podoba moim użytkownikom. Otóż na każdej stronie znajduje się dla zalogowanych użytkowników informacja o ich kwocie. I oni narzekają czasem, że przebywając na Shoutbox nie widzą zmieniającej się kwoty i nie wiedzą czy ich kontrahent wpłacił gotówkę czy też nie.

I tu mi wpadł do głowy ten pomysł, tylko zupełnie nie wiem jak podejść do tego tematu. Nie ma sensu przecież wywoływać Ajax co X czasu i sprawdzać takie dane zapytaniami, w końcu to by zrujnowało stronę. Chyba, że istnieje jakiś prosty sposób, który temu zapobiega. Liczę na Waszą pomoc!

Pozdrawiam,
Largo
karolrynio
Gdzieś czytałem o takiej technice, ale to działa po stronie serwera na takiej zasadzie:
Wywołujesz zapytanie ajax i teraz po stronie serwera sprawdzasz czy zmieniły się dane zatrzymujesz na kilka sekund i znowu sprawdzasz dopóki dane się nie zmienią. Jak się zmienią to wysyłasz wynik do użytkownika, on odbiera to wyświetla i ponownie wysyła zapytanie.
Largo
Witaj,

Oficjalnie korzystam z biblioteki Prototype i w dokumentacji znalazłem ciekawą klasę, Ajax.PeriodicalUpdater. Oto mój kod:

[JAVASCRIPT] pobierz, plaintext
  1. <script type='text/javascript'>
  2. var frequencyRate = parseInt( 10 );
  3.  
  4. new Ajax.PeriodicalUpdater( 'forumGoldAmount', ipb.vars['base_url'] + 'app=fg&module=ajax&section=account&secure_key=' + ipb.vars['secure_hash'] + '&do=getUserAmount',
  5. {
  6. method: 'get',
  7. frequency: frequencyRate,
  8. }
  9. );
  10. </script>
[JAVASCRIPT] pobierz, plaintext


I wg. dokumentacji sam Prototype sprawdza czy dana treść została zmieniona, dzięki parametrowi decay, którego nie używam. Zadanie jest proste - skrypt ma sprawdzać co ok. 10 sekund czy zmieniła się kwota użytkownika, która jest obiektem. Więc aktualizacja transakcji oznacza aktualizację samego obiektu użytkownika. To ma działać tylko dla aktualnie zalogowanego! Czy to rozwiązanie optymalne?

Pozdrawiam,
Largo
nospor
No ale przeciez PeriodicalUpdater() jest dokladnie tym samym co mowiles w pierwszym poscie: co x czasu leci żądanie ajaxem na serwer i odpytanie serwera (bazy) o kwotę. Jedyną różnicą jest decay, które "inteligentnie" roznicuje czas odpytywania.

Cytat
. Więc aktualizacja transakcji oznacza aktualizację samego obiektu użytkownika
A gdzie ty przechowujesz ten obiekt uzytkownika?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.