Wpis z mikrobloga

#programowanie #php #js #mysql
Witam, mam spory dylemat, gdyż potrzebuję na stronie zrobić dynamiczne pobieranie danych z mysql. Chciałem zrobić pętlę, że co sekundę pobiera dane ale wydaje mi się, że jest to mało wydajne. Coś słyszałem, że można zrobić to ajaxem ale z JS znam tylko podstawy. Jak się za to zabrać?
  • 13
@twinzpl: ale że co, co 0.1s będzie się coś pojawiać w bazie danych ? jeśli nie i będziesz odświeżał co 0.1s aby sprawdzić czy coś jest to jest to błędne rozwiązanie, po to powstało właśnie websockets, tj ktoś coś dodaje -> pojawia się nowy rekord w bazie danych -> do wszystkich co są podłączeni do socketa jest wysyłana informacja że hej, jest coś nowego(albo w ogóle już tutaj wysyła ten nowy
Ew. jeżeli z jakiegoś powodu nie możesz/nie chcesz/nie potrafisz skorzystać z Websocketów dodaj warstwę pośrednią w postaci jakiegoś cache'a tak, aby szło max jedno zapytanie co 0.1 do bazy danych, wynik zapisywany do pamieci, a każdy kto w tym czasie odpyta o dane otrzyma wynik z cache'a. Jeżeli dobrze dodasz indeksy na bazie danych to nawet w przypadku sporej ilości danych 10 zapytań na sekundę to będzie pikuś.
@suawus: nie wiem po co się pieprzyć, jak nie ma jakiegoś obciążającego orma to przecież(zapewne mysql) ma już wbudowany result query cache, poza tym tutaj baza danych to będzie najmniejsze zmartiwnie właśnie, większość baz danych ma wbudowany result query cache, większym problemem będzie sam czas zapytań co 0.1s
@Jurigag: Bo nadal trzeba rezultaty z danych przesłać. Najlepiej przesyłać rezultaty tylko gdy zaszły zmiany ale z tym trzeba będzie trochę się napracować jeśli się nie używa normalnej bazy danych.
@plushy: przecież ci mówie chyba, to jest result query cache, a nie cache całej bazy, tj jak zrobisz sobite zapytanie z limit 10, a potem z limit 20, to będziesz miał tak samo jakbyś zrobił memcache i dwa różne klucze cache i dwa różne rezultaty z tego