![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 11.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Na potrzeby wykresu Highcharts napisałem skrypt PHP, który pobiera dane z bazy MySQL i koduje je do formatu JSON (3 serie danych). Skrypt działa poprawnie, ale czas jego wykonania i pobrania wyniku do przeglądarki jest bardzo długi ok. 10 sekund co stwarza problemy przy wywoływaniu go co 1 minutę wraz z innymi skryptami - zawieszenie przeglądarki po ok. 1 godzinie. W przykładzie poniżej ograniczyłem wynik do 5 minut, ale w rzeczywistości pobierane są dane z miesiąca (43 tys. rekordów). Proszę o radę w jaki sposób zoptymalizować ten skrypt? Oczekiwany format kodowania: Wynik działania skrypu Kod:
Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 12 Dołączył: 17.09.2014 Skąd: Krasnystaw Ostrzeżenie: (0%) ![]() ![]() |
A zdajesz sobie sprawę z tego co w takim przypadku, kiedy np. pobierasz te 40k rekordów wypluwa profiler?
https://s16.postimg.org/nl90e5alh/profiler_1.png https://s1.postimg.org/892sgpz7z/profiler_2.png Test na 800k rekordów z losowymi danymi w bazie, profiler frameworka Kohana 3.3. Oprócz zapytań z bazy dałem benchmark na tych operacjach na array w PHP oraz na konwesji do JSON. W tym przypadku ponad 1s zajmuje pobranie danych z bazy i ponad 1s same operacje w PHP i konwersja do JSON. A i jeszcze zanim te dane zostaną wyplute na ekran to też trochę czasu minie. Daje to wiele do myślenia. To dlatego przy listowaniu danych stosuje się paginację albo wczytuje tylko pewną ilość danych a przy scrollowaniu strony w dół AJAX-em wczytuje kolejne partie danych. Albo w ogóle pewne dane wczytuje AJAX-em z jakimś tam loaderem który każe czekać a nie coś takiego, że zanim się w ogóle strona wyświetli to trzeba czekać nie wiadomo ile. I nic tu nie dało założenie tego indeksu. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 04:12 |