![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 242 Pomógł: 0 Dołączył: 28.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Po dłuższym czasie postanowiłem wrócić do przygody z php. Jako swój pierwszy projekt postanowiłem zakodować stronę pewnej gry. Aktualnie robię ranking, jednak przeszukiwanie całej bazy w której są dane kilkudziesięciu tysięcy użytkowników za bardzo obciąży serwer. Potrzebuje wyświetlić i cachować takie dane jak czas gry, poziom gracza jakieś tam osiągnięcia itd. Chciałbym aby te dane aktualizowały się np. co 10 minut. Na internecie znalazłem klasę nospora, jednak nie wiem jeszcze jak za bardzo się jej używa. Prosiłbym Was o jakieś wskazówki i poradniki (mogą być anglojęzyczne) jakiej klasy użyć ew. jak to rozwiązać. Pozdrawiam. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 821 Pomógł: 111 Dołączył: 11.09.2006 Skąd: Biała Podlaska Ostrzeżenie: (0%) ![]() ![]() |
Zazwyczaj klasy tego typu działają na podobnej zasadzie.
Czyli klasa sprawdza czy zapytanie jest cachowane jeśli jest to je pobiera i wyświetlasz, w przeciwnym wypadku pobierasz dane z bazy danych i wysyłasz do cache na określona ilość sekund. Biblioteka sama sprawdzi czy czas świeżości danych został przekroczony, jeśli został to nic nie zwróci. Jeśli masz problem najlepiej z wpadnij konkretnym bilbioteką/kodem, będzie łatwiej nam pomóc. Takich bibliotek znajdziesz wiele: https://www.google.pl/search?q=php+cache+github |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 242 Pomógł: 0 Dołączył: 28.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
Napisałem taką funkcję
Najbardziej przekonuje mnie: http://www.phpfastcache.com/ jednak kompletnie nie wiem jak to zastosować w tej funkcji. Na ich stronie są przykłady jednak nie za bardzo wiem o co w nich biega. Mam jeszcze 1 problem, w tej funkcji jest zapytanie które ma wyszukać dane graczy. Chciałbym aby wyszukał wszystkich graczy a nie tylko tych co są w gildii. Byłbym bardzo wdzięczny gdybyś pokazał mi na przykładzie tej funkcji jak zastosować ten system cache. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 821 Pomógł: 111 Dołączył: 11.09.2006 Skąd: Biała Podlaska Ostrzeżenie: (0%) ![]() ![]() |
Którego dokładnie nie rozumiesz?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 242 Pomógł: 0 Dołączył: 28.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
Ten phpFastCache bez użycia nawet wywala mi mnóstwo błędów w dodatku chyba nie obsługuje zapytań mysqla.
Możesz polecić jakąś łatwą do ogarnięcia na początek bibliotekę? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 12 Dołączył: 17.09.2014 Skąd: Krasnystaw Ostrzeżenie: (0%) ![]() ![]() |
No przecież można sobie napisać tylko prostą funkcję, po co od razu jakieś klasy:
https://kohanaframework.org/3.2/guide/api/Kohana_Core#cache I jako data daje się tą tablicę którą zwróci zapytanie, nastąpi serializacja i zapis do pliku tekstowego, następnie odczyt i sprawdzanie po dacie i godzinie ostatniej modyfikacji czy jest ważna, jeśli tak to odczyt i deserializacja. Co w tym takiego trudnego? |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 242 Pomógł: 0 Dołączył: 28.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
Próbowałem napisać swoją funkcję ale to chyba nie ma sensu.
Wyszło mi coś takiego (nie działa warunek z time())
Jednak to nie ma sensu ;/ Bardzo bym prosił o pokazanie na przykładzie tego:
jak cachować to zapytanie i później wyświetlać to w tabeli. Niestety ciężko mi cokolwiek zrozumieć do czasu aż nie zobaczę czegoś na "żywym" przykładzie. Oczywiście to nie jest jedyna funkcja którą będę musiał cachować, chcę na jej przykładzie zobaczyć tylko jak to działa. Ogarnąłem już to cachowanie, bo znalazłem bardzo prostą bibliotekę. Funkcja zwraca mi aktualnie tablice w tym stylu $dane[1][id]; I jak z takiej tablicy wyszukać dane po np. nazwie a nie po numerze tablicy? Chodzi mi o coś w stylu $dane["Zenek"]["id"], czyli wyciągam id gracza Zenek. Ten post edytował Gruchol 25.07.2016, 18:52:31 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 12 Dołączył: 17.09.2014 Skąd: Krasnystaw Ostrzeżenie: (0%) ![]() ![]() |
No to masz tu (ale nie sprawdzałem działania kodu), może to zrozumiesz. I nie licz na gotowce, zresztą ograniczyłem tylko do jednego rekordu.
Przeanalizuj to sobie jak to wszystko działa. Ten post edytował daro0 27.07.2016, 05:44:11 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 242 Pomógł: 0 Dołączył: 28.11.2014 Ostrzeżenie: (0%) ![]() ![]() |
Tutaj lekko poprawiłem warunek bo wyrzucało błąd, że nie ma pliku:
Teraz próbuje przerobić aby wkładało wszystkie rekordy a nie tylko jeden lecz już nie mam pojęcia co z tym zrobić. Próbowałem tak: jednak nic nie chce ruszyć. Ten post edytował Gruchol 26.07.2016, 21:42:58 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 88 Pomógł: 12 Dołączył: 17.09.2014 Skąd: Krasnystaw Ostrzeżenie: (0%) ![]() ![]() |
Sam zauważyłem ten błąd i też poprawiłem.
http://php.net/manual/en/pdostatement.fetchall.php Zwróć uwagę że otrzymasz tablicę obiektów typu stdClass a jako nazwa cache powinno być to zapytanie, dlatego też zrobiłem inaczej. Ten post edytował daro0 27.07.2016, 06:09:22 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 22:47 |