Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Funkcja cache'ująca.
Novy.
post
Post #1





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

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


Chciałem napisać własną funkcje cachującą, bo w necie są tylko systemy oparte na klasach. W związku z tym ze nie ogarniam OOP i nie lubie używać czegoś czego nie rozumiem nie chce ich używac (IMG:style_emoticons/default/biggrin.gif)

Co źle robie? Wiem, że dziwnie napisane ;p samoukiem jestem więc dlatego błedy.

Czego nie jestem pewnien? Zapisywania wyniku do pliku i odczytania go. Nie wiem właściwie czy dobrze funkcje zbudowałem.. ;/

  1. function mysql_cache_query($zapytanie, $waznosc){
  2. $name = md5($zapytanie);
  3. $istnieje = file_exists('cache\\'.$name.'.cache');
  4. if(!$istnieje){
  5. $stworz = fopen("cache\\".$name.".cache", "w+");
  6. $tablica = mysql_fetch_array(mysql_query("$zapytanie"));
  7. $serialize = serialize($tablica);
  8. $fp = fopen('cache\\'.$name.'.cache', "a");
  9. flock($fp, 2);
  10. fwrite($fp, $serialize);
  11. flock($fp, 3);
  12. fclose($fp);
  13. return $tablica;
  14. }
  15. else{
  16. $mtime = filemtime('cache\\'.$name.'.cache');
  17. $rtime = time() - ($waznosc*60);
  18. if ($mtime < $rtime){
  19. unlink('cache\\'.$name.'.cache');
  20. $tablica = mysql_fetch_array(mysql_query($zapytanie));
  21. return $tablica;
  22. }
  23. else{
  24. $tablica = unserialize(fread(fopen('cache\\'.$name.'.cache', "a"), filesize('cache\\'.$name.'.cache')));
  25. return $tablica;
  26. }
  27. }
  28. }


tak wywołuje funkcje

  1. mysql_cache_query('SELECT * FROM users ORDER BY posts DESC', 1);


no i później chce wyświetlić info z tablicy:

  1. echo 'Użytkownik '.$tablica['login'].': '.$tablica['posts'].' postów.'


Ten post edytował Novy. 10.03.2012, 22:05:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Novy.
post
Post #2





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

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


Zwraca co potrzeba.

Tylko jak to wyświetlić w takiej liscie?

Bez tego używałem while np.:

  1. $i = 0;
  2. while($tablica = mysq_fetch_array($q)){
  3. echo $i.'. Gracz: '.$tablica['login'];
  4. $i++;
  5. }


a teraz nie wiem jak, jak wstawie $mojWynik=mysql_cache_query("SELECT * FROM users",1); albo $mojWynik do while to mi się robi nieskonczona lista ;<
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 19:34