[JQuerty][JS] funkcja .get() powoduje zużycie 5GB ramu |
[JQuerty][JS] funkcja .get() powoduje zużycie 5GB ramu |
15.04.2019, 13:22:25
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 13.04.2019 Ostrzeżenie: (0%) |
Cześć!
Pracuję nad projektem studenckim, który ma na celu aktualizowanie na żywo wykresów wyświetlanych na stronie. Co mam: data.php
index.php
W index.php wyświetlam również wykresy. Jak widać, w .get() generuje ścieżkę do data.php wraz za zapytaniem do MySQL. Wiem, że kod jest toporny i niebezpieczny, ale nie miałem wcześniej doczynienia z JS, a PHP+HTML coś tam liznąłem. Kwestia jest taka, że po zostawieniu odpalonej strony w przeglądarce (Mozilla), po 15 minutach zużycie ramu sięga 5 GB. Na telefonie strona działa może pół minuty i wywala się przeglądarka. Dlaczego zastosowałem takie rozwiązanie? Mam hosting home.pl i nie mogę zainstalować Node.JS do łączenia z MySQL w JS. Zatem poszedłem okrężną drogą. To jedyne rozwiązanie jakie udało mi się wykonać aby móc w czasie rzeczywistym wyświetlać dane na wykresie i manipulować przedziałami ich wyświetlania. Pytanie: czy jest możliwość ogarnięcia tego w ten lub inny sposób, tak aby przeglądarka nie zapychała się? Jakieś zerowanie zmiennych? Wydawało mi się, że nowo pobrane wartości z dane.php do zmiennej będą ją nadpisywać, a wygląda na to, że tak nie jest. Dziękuję za wszelką pomoc Pozdrawiam |
|
|
18.04.2019, 22:12:39
Post
#2
|
|
Grupa: Zarejestrowani Postów: 515 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) |
co ja Ci mogę napisać.... z jeden strony nie chcę Ci klepać gotowca bo co mi z tego, a z drugiej bez gotowca przy Twoim poziomie wiedzy będziesz się dalej babrał bez sensu.
to że wykres ma się aktualizować co sekundę to nie jest problem, można tak zrobić i będzie to działało dobrze. Nad czym musisz popracować: - robisz 3 requesty do serwera, po co ? wystarczy jeden, który zwróci Ci dane dla wszystkich wykresów. Pamiętaj że każdy kolejny request, to zapychacz dla serwera i przeglądarki. - im wykres ma większą pulę danych do narysowania, tym jest "mniej wydajny", dlatego wraz z upływem czasu wzrasta zużycie zasobów. Rozwiązanie ? Ogranicz liczbę rysowanych punktów, np do max 100 - starsze usuwasz z puli. Są skrypty wykresów które mogą wydajnie pomieścić nawet setki tyś punktów, lecz raczej nie wykonuje się na nich tak częstych aktualizacji. - teraz to może nie ma dla Ciebie znaczenia, ale należałoby odliczać czas do kolejnej aktualizacji dopiero po tym jak wykresy się zaktualizują - czyli wywołujesz funkcję która odpytuje serwer, czekasz na odpowiedź, aktualizujesz wykresy i dopiero odliczasz sekundę. - koniecznie zacznij od zmiany tych kwiatków : $.get("data.php?SELECT id, x, y FROM Dane "+"ORDER BY id DESC LIMIT "+field1, function( MySQL1 ) { |
|
|
Wersja Lo-Fi | Aktualny czas: 24.09.2024 - 06:13 |