Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Odczytywanie cachy (serialize)
Moli
post
Post #1





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

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


Hej

Mam pewien, zdaje się że dość prosty problem, ale nie wiem jak najlepiej go rozwiązać. Cachuje wpisy z bazy za pomocą serialize i zapisuje do pliku, następnie odserializowuje i chce przy pomocy pętli while (tej samej która czyta tablice z pierwszego pobrania z bazy, w razie braku cachu) wyświetlić wpisy z bazy.

Tablica bez cachowania wygląda tak
Kod
Array ( [id] => 1 [text] => cos )

a po scachowaniu tak
Kod
Array ( [0] => Array ( [id] => 1 [text] => cos ) )


Jaki jest najlepszy i najszybszy (w końcu to cache) na odczytanie cache?

Ten post edytował Moli 10.07.2007, 10:24:52
Go to the top of the page
+Quote Post
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Pokaż kod. Na pewno robisz błąd.
Jasnowdzó tu nie ma.

I popraw tytuł wątku inaczej go zamknę.
Go to the top of the page
+Quote Post
Moli
post
Post #3





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

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


Do przekazywania parametrów jest metoda (odchudzona teraz)
  1. <?php
  2. public function sqlParm ()
  3. {
  4. if ( $this->cacheStatus == 1 ) 
  5. {
  6. $this->array = unserialize ( file_get_contents ( $this->cacheFile ) ) ;
  7.  
  8. return $this->array ;
  9. }
  10. else
  11. {
  12.  $this->array = mysql_fetch_array ( $this->sqlQuery , MYSQL_ASSOC ) ;
  13.  
  14.  while ( $row = $this->array )
  15.  {
  16. $this->rows[] = $row ;
  17. break ;
  18. }
  19.  
  20. file_put_contents ( $this->cacheFile , serialize ( $this->rows ) ) ;
  21.  
  22. return $this->array ;
  23. }
  24. }
  25. ?>


Jak mówiłem, bardzo proste odczytanie. Wyświetlić chce za pomocą
  1. <?php
  2. while ( $row = sql->sqlParm() )
  3. ?>
Go to the top of the page
+Quote Post
SHiP
post
Post #4





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


Gdy istnieje cache zwracasz cały cache a nie tylko jeden wiersz z bazy danych. Musisz stworzyc licznik i poprawić klilka linijek.
  1. <?php
  2. if ( $this->cacheStatus == 1 ) 
  3. {
  4. $this->array = unserialize ( file_get_contents ( $this->cacheFile ) ) ;
  5.  
  6. return $this->array[$this -> cacheCounter++] ;
  7. }
  8. ?>


Powinno działać (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Chociaz odczytywanie cachu za kazdym razem lekko mija sie z celem wiec lepiej sprawdzic czy juz jest odczytany lub stworzyc do tego oddzielna metode

Ten post edytował SHiP 29.08.2007, 10:10:56
Go to the top of the page
+Quote Post
Moli
post
Post #5





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

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


Temat można już zamknąć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Już dawno i zupełnie inaczej to rozwiązałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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: 27.09.2025 - 18:17