• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czat w Ajax- wolne działanie, przekroczenie limitu CPU (hostinger)

Cloud VPS
+1 głos
374 wizyt
pytanie zadane 28 czerwca 2016 w JavaScript przez Adam Jakś Dyskutant (8,940 p.)
Witam, stworzyłem bardzo prosty czat z pomocą jQuery i technologii Ajax.

Polega on na podwójnym wywołaniu $.ajax, raz dla dodawania do bazy nowych wiadomości, raz dla wczytywania pięciu ostatnich rekordów.

Teoretycznie wszystko ok- wiadomości się wyświetlają- jednakże problem leży w dwóch rzeczach:

- wiadomości wyświetlają się w nieregularnych odstępach czasu (czasem od razu, czasem dopiero po kilku(nastu) sekundach)

- chat wywołuje niesamowite obciążenie hostingu (do tego stopnia, że hostinger.pl zablokował mi całą domenę :D)

W związku z powyższym nie mogę zaprezentować przykładu strony, posłużę się więc wyłącznie kodem, przy czym pozwolicie, że gwoli przejrzystości użyję wklej.org:

skrypt.js - plik, który odpowiada za połączenie z ajaxem: http://wklej.org/id/2649954/

view.php - odpowiada za realizację cześci skryptu odpowiadającej za wyświetlanie rekordów: http://wklej.org/id/2650022/

add.php - realizuje proces dodawania danych do bazy: http://wklej.org/id/2650032/

dla ciekawych index.php ze szkieletem strony: http://wklej.org/id/2650040/

Zwróćmy uwagę na plik skrypt.js, czy problemem nie wywołanie funkcji raz w document.ready, a później znów co sekunda w viewAjax()?

W jaki sposób zmienić kod aby wciąż posiadał podobną funkcjonalność, nie gwałcąc tym samym pamięci serwerowni?

Pozdrawiam.

2 odpowiedzi

+1 głos
odpowiedź 28 czerwca 2016 przez mgpl Obywatel (1,430 p.)
W 48. linijce nie wywołuj funkcji. Usuń te dwa nawiasy, bo robi się takie wywołanie rekurencyjne, że wszystko przymula. To pierwsze co mi wpadło w oko.
komentarz 28 czerwca 2016 przez Adam Jakś Dyskutant (8,940 p.)
Chodziło mi o to, żeby jakoś sprawić by funkcja wywoływała się cyklicznie, przeczuwałem, że to nie najlepszy sposób. Zamieniłem tę linijkę na  setInterval wywoływane w document.ready, do tego później dodam jakieś ograniczenie czasowe aby po pewnym czasie bez aktywności chat przechodził w tryb standby i wymagał kliknięcia w button, przez co powinienem ograniczyć ruch na stronie.

To tak jakby ktoś był ciekaw.
+1 głos
odpowiedź 28 czerwca 2016 przez Boshi VIP (100,240 p.)
Jak ma to obsługiwać więcej jak kilku użytkowników to postaw to w Node.JS bo zajedziesz bazę
komentarz 28 czerwca 2016 przez Adam Jakś Dyskutant (8,940 p.)
W tym projekcie chodziło mi głównie o zabawę z Ajaxem. Zdaję sobie sprawę, że przy większej ilości użytkowników ten sposób wykonania mógłby sprawiać problemy. Dzięki za odpowiedź.

Podobne pytania

0 głosów
1 odpowiedź 266 wizyt
pytanie zadane 19 kwietnia 2022 w HTML i CSS przez martinez7589 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 1,992 wizyt
pytanie zadane 22 stycznia 2017 w Nasze projekty przez Jonasz Osmenda Nowicjusz (120 p.)
+3 głosów
2 odpowiedzi 671 wizyt
pytanie zadane 19 kwietnia 2015 w PHP przez Arkadiusz Waluk Ekspert (290,310 p.)

93,456 zapytań

142,452 odpowiedzi

322,721 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...