Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Cachowanie zapytań
Novy.
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 8
Dołączył: 28.10.2011

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
d3ut3r
post
Post #2





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Novy.
post
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 8
Dołączył: 28.10.2011

Ostrzeżenie: (0%)
-----


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

Ten post edytował Novy. 10.03.2012, 15:10:58
Go to the top of the page
+Quote Post
d3ut3r
post
Post #4





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
by_ikar
post
Post #5





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 23:33