Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP] Automatyczne odświeżanie treści po zmianach
Forum PHP.pl > Forum > Przedszkole
lsrtb
Witam.

W jaki sposób najbardziej poprawnie zrobić automatyczne odświeżanie konkretnej strony lub jej kawałka po wykryciu zmian? Mam na myśli, jak to jest zrobione w profesjonalnych projektach?

Mój pomysł wygląda tak:

[JAVASCRIPT] pobierz, plaintext
  1. $(function(){
  2.  
  3. lastUpdate = 0;
  4.  
  5. function getContent(){
  6. jQuery.post('content/products.php', function(data){
  7. jQuery("#productsContent").html(data);
  8. });
  9. }
  10.  
  11. function checkUpdate(){
  12. $.ajax({
  13. url: 'content/ajax.php',
  14. type: 'GET',
  15. data: { action: 'checkUpdate' },
  16. success: function(data){
  17. if(data != lastUpdate){
  18. getContent();
  19. lastUpdate = data;
  20. }
  21. }
  22. });
  23. }
  24.  
  25. checkUpdate();
  26. setInterval(function() { checkUpdate(); }, 5000);
  27.  
  28. });
[JAVASCRIPT] pobierz, plaintext


W divie trzymam treść odpowiadającą za listę produktów. Co 5 sekund wysyłam zapytanie do skryptu ajax.php. Plik ten zwraca mi wartość zapisaną w bazie MySQL.
Jeżeli dodamy produkt to aktualny czas w formacie UNIX zostanie zapisany do tego pola w bazie.

Czy jest to dobrze zrobione? Może są jakieś lepsze metody? Proszę o opinie.
markuz
Źle zrobione, nie optymalnie - to serwer powinien informować klienta o zmianach, a nie klient co jakiś czas pytać serwer czy coś się zmieniło np. za pomocą websocket.
nospor
@Lord odnosze wrazenie ze nie zrozumiales problemu
Lord
Cytat(nospor @ 28.09.2018, 16:32:13 ) *
@Lord odnosze wrazenie ze nie zrozumiales problemu

Taaaa, to już dziś 2 w wpadka...
lsrtb
Proszę zatem o więcej informacji jak to ma być zrobione. Wiem, że to nieoptymalne. Przy dużej liczbie użytkowników obciążam serwer. Nie oczekuję gotowego kodu, ale więcej wskazówek.
markuz
Tworzysz serwer websocket.
Każdy klient łączy się z tym serwerem za pomocą JavaScript.
Jak ktoś doda produkt, to serwer wysyła informację do podłączonych klientów, że produkt został dodany.
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.