Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Cachowanie zapytań
Forum PHP.pl > Forum > Przedszkole
Novy.
Witam, chciałbym zoptymalizować troche mój skrypt. Chodzi o cache'owanie zapytań. Nie mam pojęcia jak takie coś wykonać i na jakiej zasadzie to działa.

Czytałem troche o cache'owaniu, ale teraz to mi się w ogóle poplątało..

Jakieś klasy, obiekty w różnych poradnikach, i tu jest probelm z racji tego ze php uczyłem się z internetowych kursów to jeszcze mam małe pojęcie o programowaniu objektowym.

Da się to napisać strukturalnie ? Jeśli tak prosze o wskazówki.

Domyślam się, że coś takiego powinno wystarczyć:

  1. <?php
  2. function cache_mysql_query($sql) {
  3. // coś tam.
  4. }
  5.  
  6. $query = "SELECT * FROM `users` ORDER BY `posts` DESC LIMIT 50";
  7. $rs = cache_mysql_query($query);
  8. ?>


Tylko co w funkcji biggrin.gif

Przykładowe zapytanie:

  1. $query = mysql_query("SELECT * FROM `users` ORDER BY `posts` DESC LIMIT 50");


Powiedzmy, że chce sprawidzić 50 osób z największa liczbą postów, wyciągam wszystkie dane o użytowniku, bo chciałbym je wyświetlić. Jest ok, tylko po co pobierać te dane cały czas?

Wolałbym zeby dane były pobierane co np. 30 minut z bazy, a normalnie odczytywane z cache.
d3ut3r
Wydaje mi się, że najprościej to hashuj sobie za pomocą np md5 zapytanie sql następnie sprawdzaj czy istnieje plik twoj_hash.php jeżeli tak to wczytuj go jeżeli nie to zapisz do tego pliku wynik zapytania.
Novy.
Dzięki za odpowiedz.

A co z czasem?

Sprawdzam czy plik istnieje -> istnieje, odczytuje z pliki..

Fajnie, ale chce co 30 minut pobierać dane z bazy, a jak plik będzie istniał to będzie cały czas odczytywało z pliku ;<

może ciastko ustawie kiedy utworzy plik, i bede sprawdzał czy ciastko istnieje. ;d taki pomysl wpadl mi do glowy ;p
d3ut3r
Możesz do CRONA dodać skrypt uruchamiany co 30 minut który z katalogu cache usunie wszystkie pliki które leżą tam 30 minut lub dłużej.

Zamiast do CRONA możesz do swojego pliku index.php (chodzi o plik który jest odpalany z każdym żądaniem) dodać funkcję usuwającą zbędny cache.
by_ikar
Cytat
Fajnie, ale chce co 30 minut pobierać dane z bazy, a jak plik będzie istniał to będzie cały czas odczytywało z pliku ;<


Sprawdzasz czas modyfikacji pliku, jeżeli jest większy niż 30min, no to kasujesz plik, i tworzysz nowy. Każdy jeden system cache to ma. Poszukaj na forum, jest klika gotowych klas, chociażby ta nospora, która ma to czego ci potrzeba.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.