Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Auto update (request) ze strony servera
Baumi
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 5.07.2008

Ostrzeżenie: (0%)
-----


Witam,

Istnieje w mechanizm pozwalający na odświeżenie strony (bądź jej części) wywołany po stronie serwera (coś jak servlety)?

Mój problem jest następujący: maszyna podpięta do Internetu wysyła dane do serwera gdzie aplikacja działająca jako daemon przetwarza dane i wrzuca je do bazy. Użytkownik wchodzi na stronkę odpala graf i obserwuje sobie na nim dane przychodzące z maszyny. Aktualnie odświeżanie następuje w regularnych interwałach wywoływane przez JavaScript. Czy istnieje jakiś sposób by (bez przepisywania aplikacji na Jave) oświeżanie grafu następowało tylko wtedy gdy pakiet dotrze z maszyny do aplikacji (ona wywoła refresh) bądź zostanie wrzucone do bazy (PostgreSQL - i tu jakiś trigger). Ma ktoś może jakiś pomysł, bo wujek Google nie bardzo wie jak to ugryźć?
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Flash i sockety (badz xmlsocket)
Php + push ajax

Ten post edytował wookieb 1.09.2010, 11:49:18


--------------------
Go to the top of the page
+Quote Post
Crozin
post
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


WebSockets - ale to jeszcze nie jest technologia, z której można korzystać. Póki co niepozostaje Ci nic innego jak odpytanie serwera co jakiś czas.

EDIT: wookieb zasugerował Flash i sockety, ale to chyba tak samo ciekawa opcja jak przepisywanie na Javę smile.gif

Ten post edytował Crozin 1.09.2010, 11:42:07
Go to the top of the page
+Quote Post
Baumi
post
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 5.07.2008

Ostrzeżenie: (0%)
-----


Dzięki za podpowiedzi. Problem jednak w tym, że flash za dużo tu nie pomoże ponieważ graf miał być tylko przykładem - użytkownik widzi w rzeczywistości całe raporty oparte na tych danych a tylko pewne ich części należało by odświeżyć w zależności od danych dostarczanych z maszyny. Hmmm... ciężka sprawa...
Go to the top of the page
+Quote Post
wookieb
post
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




No ale jaki widzisz problem? Bo ja nie widzę żadnego.


--------------------
Go to the top of the page
+Quote Post
Baumi
post
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 5.07.2008

Ostrzeżenie: (0%)
-----


Nie rozumiem pytania. Czy pytasz o powod dlaczego chce w ten sposob odswiezac? Otóż do sieci podpietych jest na razie ok. 20 urzadzen ktore wysylaja dane w regularnych odstepach. Jednak zmienia sie podejscie i teraz odstepy beda nieregularne i moga wynosic od kilku minut do kilku sek. Jezeli urzadzenie nic nie robi to nie chce przeciazac bazy zapytaniami o nowe dane (w zalozeniu jest kilka tyś maszyn + kilkanascie tyś użytkownikow). Dlatego chce odswiezac raporty tylko gdy sa nowe dane. Aplikacja jest jednak na tyle sporo (2 lata tworzenia kodu), że sporo czasu i pieniedzy zajelo by stworzenie czegos nowego badz tez przepisanie wszystkiego. To jest powod dla ktorego szukam innego rozwiazania.
Go to the top of the page
+Quote Post
Crozin
post
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Prawdopodobnie najlepszym rozwiązaniem będzie dla Ciebie maksymalne zoptymalizowanie żądań wysyłanych przy pomocy AJAXa. Zamiast odpytywać każdorazowo bazę możesz utworzyć sobie plik z czasem ostatniej aktualizacji - jeżeli jest on większy niż ten przesyłany jako parametr żądania, wtedy dopiero baw się w nawiązywanie połączenia i wysyłkę danych.

Możesz też to żądanie wysyłać do bardzo prostego skryptu (który jest poza infrastrukturą całej aplikacji) - dosłownie 10 linijek kodu. On zwracałby tylko informację o tym czy coś się zmieniło, jeżeli tak może przekierować na właściwą akcję aplikacji zwracającą dane.
Go to the top of the page
+Quote Post
michaJlS
post
Post #8





Grupa: Zarejestrowani
Postów: 83
Pomógł: 9
Dołączył: 21.05.2004
Skąd: Glogau/Breslau

Ostrzeżenie: (0%)
-----


Zarówno z apletów Java jak i z animacji flasha możesz odpalać funkcje JavaScript. Więc dopisujesz sobie jakiś prosty skrypt w jednym albo drugim, który będzie utrzymywał upragnione przez Ciebie połączenie, po czym po odebraniu powiadomienia, wywołujesz funkcję js, która z kolei odpala żądanie ajaxowe. tadam. Tyle że w takim wypadku będziesz miał dużo zapytań w krótkim czasie. Pomyśl jeszcze o tym, jak te dane będą często aktualizowane, bo jeśli częściej niż co minutę, to może okazać się lepiej robić updt co minutę np. Niegłupim rozwiązaniem wydaje się też pomysł Crozina.
Go to the top of the page
+Quote Post
vokiel
post
Post #9





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Przejrzyj ten wątek: Komunikacja (powiadamianie) ServerSide -> ClientSide oparte na zdarzeniach


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 11:25