Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Jquery + MySQL] Odświeżanie czatu
Forum PHP.pl > Forum > XML, AJAX
john-johnson
Witajcie!


Gdzieś w zakamarkach google znalazłem skrypt odświeżania czatu (czat stworzyłem samodzielnie, php na tym poziomie to pestka):

[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function() {
  2. $("#frame3").load("posts.php");
  3. var refreshId = setInterval(function() {
  4. $("#frame3").load('posts.php');}, 3000);
  5. $.ajaxSetup({ cache: false });
  6.  
  7. $("#frame3").scrollTop($("div.element.active").position().top);
  8.  
  9. });
[JAVASCRIPT] pobierz, plaintext


Wyśmienicie! Skrypt ten ładuje zawartość pliku 'posts.php' do diva o nazwie #frame3 dokładnie co 3 sekundy. Plik 'posts.php' łączy się z bazą i pobiera 20 najnowszych postów. Jak pewnie łatwo wywnioskowaliście takie rozwiązanie nie jest optymalne.

20x60=1200

Czyli 1200 razy na godzine pobieram 20 postów z bazy danych. Nie wiem ile to waży, ale otatnio zauważyłem, że mój transfer szybko się kurczy. Zoptymalizowałem Wordpressa prawie na 100%, ale nadal się kurczy jakieś 100mb dziennie.


Chciałbym zoptymalizować też ten skrypt odświeżania. Uprzedzam, nie jestem informatykiem, ani programistą ani nic. Po prostu robię strony gdy ich potrzebuję. Wymyśliłem taki sposób.


1. Dodam nową tabelę do bazy danych - "new": [is_new | wartosc].
2. Utworzę plik łączący się z tą tabelą - "check-new.php".
3. Do skryptu odświeżającego posty dodam instrukcję, która najpierw sprawdzi zmienną z "check-new.php" i jeśli zmienna będzie prawidłowa, to dopiero wtedy pobierze nowy "posts.php".

4. Kłopot w tym że nie mam pojęcia jak przekazać ajaxowi, żeby sprawdził zmieną z "check-new.php" i dopiero potem zabrał się za posts.php - jeśli będzie taka potrzeba.

Mógłby ktoś mnie nakierować?
markonix
Pobieranie 20 rekordów co 3 sekundy nie jest niczym przerażającym póki na forum nie siedzi kilka tysięcy osób.
Popatrz na to z innej strony - czasem nie jesteś tego świadom ale otwarcie podstrony serwisu to od kilku nawet i do kilkudziesięciu zapytań (statystyki, liczniki, reklamy, powiadomienia, sprawdzanie typu konta, treść właściwa podstrony i wiele innych). Tak więc gorsza jest 10x osoba, która chodzi po Twojej stronie aniżeli taki czat.

Taki czat na trasnfer nie powinien mieć żadnego wpływu - toż to są kb jak nie mniej (sam tekst, 20 linijek tekstu).

Twój pomysł jest kiepski - z jednego zapytania robisz od 1 do 2.
Takie is_new i tak pobierać musi jeden wiersz żeby sprawdzić np. po ID czy jest nowy post.
Takie rozwiązanie bym zastosował jeżeli na czacie siedzi bardzo dużo osób, albo bardzo mało się wypowiada.

Poczytaj o long polling - ostatnio była nawet dyskusja na tym forum. Oszczędza troszkę serwer.
john-johnson
Aha, czyli olać to, bo tylko sobie oczy napsuję. wink.gif

Więc moim zadaniem nie jest przerobienie czatu, tylko znalezenie problemu w wordpressie, co tam tyle może żreć.

Okej dzięki! Temat do zamknięcia!
markonix
Cytat(john-johnson @ 6.04.2013, 19:26:27 ) *
Więc moim zadaniem nie jest przerobienie czatu, tylko znalezenie problemu w wordpressie, co tam tyle może żreć.

Eee... Gdzie coś choć w jednym słowie o tym wspomniałeś w całym temacie?questionmark.gif
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.