Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] coś szybszego od serializacji?, cache tablic
Beynar
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 6.12.2007

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


Zabieram się już trzeci raz do napisania cache zapytań do bazy. A dokldnie ich wyników czyli tablic.
Będą to zawsze tablice dwu-wymiarówe. Próbowałem już różnych sposobów:
- serializacji
- wlasnej serializacji czyli sam separuje i sam składam z ciągu tablice, niestety wolniejsze od klasycznej serializacji
- zapisywanie jako źródło php, potem require i wywoływanie funkcji ktora przwyroci mi tablice... niestety jakies 2-3 razy wolniejsze od serializacji
- różne kombinacje drugiego punktu, bardzo szybko moge odczytac cache za pomoca fread i przwrocenie go do tablicy jednowymiarowej, czyli oddzielenie rekordów ale nie pol wyniku wygladaloby to tak:
Kod
[0] => imie0#nazwisko0#adres0
[1] => imie1#nazwisko1#adres1
[2] => imie2#nazwisko2#adres2


"#" to moj separator. Iterowanie w calej tablicy i rozbijanie ciągów po sepratorze by stworzyc dwuwymiarowa tablice jest juz bardzo kosztowne i wychodzi na to, ze klasyczna serializacja wychodzi najszybciej, ale i tak mnie to nie-zadawala... jest to niewiele szybsze od zapytania sql.

Czy macie jakis inny, szybszy sposob niz serializacja?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
franki01
post
Post #2





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


A nie mozna stworzyc kodu, ktory bys dal do pliku, a nastepnie ten plik incudowal? Chodzi mi o takie cos:

  1. <?php
  2. // ..... w $result jest wynik zapytania
  3. $string = '<?php
  4. $array = array();
  5. ';
  6.  
  7. while($row = mysql_fetch_assoc($result)) {
  8. $string .= '$array[] = array(';
  9. $tmp = '';
  10.  foreach($row as $key => $value) {
  11. $tmp .= ",'".addslashes($key)."' => '".addslashes($value)."'";
  12.  }
  13. $string .= substr($tmp, 1).');
  14. ';
  15. }
  16.  
  17. $string = '?>';
  18.  
  19. $fp = fopen('plik.txt', 'w+');
  20. fputs($fp, $string);
  21. fclose($fp);
  22. ?>



Mysle ze zrozumiale (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Po takim czyms, wystarczyloby zaincudowac plik.txt i w tablicy array() bylaby ta dwywymiarowa tablica. Pisane w palca, w razie bledow poprawiac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował franki01 1.01.2008, 22:50:56
Go to the top of the page
+Quote Post
seaquest
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 790
Pomógł: 7
Dołączył: 6.02.2003
Skąd: Polska

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


serializacja jest najszybsza

  1. <?php
  2. file_put_contents('cache', serialize($result));
  3. ?>


  1. <?php
  2. $result = unserialize(file_get_contents('cache'));
  3. ?>
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: 7.10.2025 - 01:39