Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql]proste cache
Forum PHP.pl > Forum > Przedszkole
mateuszpi
Witam ponownie.tymrazem sprowadza mnie do was kwestia cache.czytałem troche na forum jak róniez w google. Tak dokładnie to cały dzień praktycznie zajmuje się właśnie tą kwestią. i powiem szczeze nic nie rozumiem z tego cache.czy możecie polecic strony na których jest prosto opisane cachowanie stron php na któych używam zapytań sql.Chciałbym również abyście wyjaśnili mi jeszcze kwestię optymalizacji samych zapytań. a dokłądnie wywoływanie sql w pętli. czyli uproście coś takiego:
  1. <?php$sql = &#092;"SELECT * FROM magazyn $where\";if ( !$result = mysql_query($sql) ) { error(__FILE__, __LINE__, $lang['error_magazyn_info'], $sql, mysql_error(), mysql_errno()); }while($row = mysql_fetch_array($result)){  $sql3 = \"SELECT * FROM kategorie WHERE id = '\".$row['kategoria'].\"'\"; if ( !$result3 = mysql_query($sql3) ) {  error(__FILE__, __LINE__, $lang['error_magazyn_info'], $sql3, mysql_error(), mysql_errno()); } $row3 = mysql_fetch_array($result3);  $sql2 = \"SELECT * FROM zamowienia WHERE login = '\".$_SESSION['login'].\"' AND id_m = '\".$row['id'].\"'\"; if ( !$result2 = mysql_query($sql2) ) {  error(__FILE__, __LINE__, $lang['error_magazyn_info'], $sql2, mysql_error(), mysql_errno()); } $row2 = mysql_fetch_array($result2);}?>
No i jeśli to nienadwyręży Waszej cierpliwości do mnie to również prosił bym o jakiś prosty opisik dlaczego tak a nie inaczej.oczywiście wszystko dotyczy przyspieszenia działania skryptu.Z góry dziekiMateusz

nikt nie potrafi mi pomóc questionmark.gif sad.gif

jeśli nie ma przyjaznego opisu cachowania to przynajmniej uporządkujcie mi ten kod php i to opiszcie jak i dlaczego ??chyba ze to nie da sie inaczej napisać questionmark.gif
Moli
Myślę że to Ci pomoże.
mateuszpi
ok. dzięki za linka. niby czytałem ale posiedze nad tym jeszcze troche.
a co ze sprawą poprawy zapytania questionmark.gif
czy jest poprawne skoro nikt o nim nie wspomina questionmark.gif

daje jeszcze raz bo ta wcześniejsza wersja coś sie rozjechała
  1. <?php
  2. $sql = "SELECT * FROM magazyn $where";
  3. echo $sql;
  4. if ( !$result = mysql_query($sql) )
  5.  {
  6. error(__FILE__, __LINE__, $lang['error_magazyn_info'], $sql, mysql_error(), mysql_errno());
  7.  }
  8. while($row = mysql_fetch_array($result))
  9. {
  10.  
  11.  
  12.  
  13.  $sql3 = "SELECT * FROM kategorie WHERE id = '".$row['kategoria']."'";
  14.  if ( !$result3 = mysql_query($sql3) )
  15. {
  16.  error(__FILE__, __LINE__, $lang['error_magazyn_info'], $sql3, mysql_error(), mysql_errno());
  17. }
  18.  $row3 = mysql_fetch_array($result3);
  19.  
  20.  
  21.  
  22.  $sql2 = "SELECT * FROM zamowienia WHERE login = '".$_SESSION['login']."' AND id_m = '".$row['id']."'";
  23.  if ( !$result2 = mysql_query($sql2) )
  24. {
  25.  error(__FILE__, __LINE__, $lang['error_magazyn_info'], $sql2, mysql_error(), mysql_errno());
  26. }
  27.  $row2 = mysql_fetch_array($result2);
  28. }
  29. ?>
pink
Cytat(mateuszpi @ 1.09.2007, 19:41:11 ) *
ok. dzięki za linka. niby czytałem ale posiedze nad tym jeszcze troche.
a co ze sprawą poprawy zapytania questionmark.gif
czy jest poprawne skoro nikt o nim nie wspomina questionmark.gif

daje jeszcze raz bo ta wcześniejsza wersja coś sie rozjechała
  1. <?php
  2. $sql = &#092;"SELECT * FROM magazyn $where\";
  3. echo $sql;
  4. if ( !$result = mysql_query($sql) )
  5.  {
  6.   error(__FILE__, __LINE__, $lang['error_magazyn_info'], $sql, mysql_error(), mysql_errno());
  7.  }
  8. while($row = mysql_fetch_array($result))
  9. {
  10.  
  11.  
  12.  
  13.  $sql3 = &#092;"SELECT * FROM kategorie WHERE id = '\".$row['kategoria'].\"'\";
  14.  if ( !$result3 = mysql_query($sql3) )
  15.   {
  16.    error(__FILE__, __LINE__, $lang['error_magazyn_info'], $sql3, mysql_error(), mysql_errno());
  17.   }
  18.  $row3 = mysql_fetch_array($result3);
  19.  
  20.  
  21.  
  22.  $sql2 = &#092;"SELECT * FROM zamowienia WHERE login = '\".$_SESSION['login'].\"' AND id_m = '\".$row['id'].\"'\";
  23.  if ( !$result2 = mysql_query($sql2) )
  24.   {
  25.    error(__FILE__, __LINE__, $lang['error_magazyn_info'], $sql2, mysql_error(), mysql_errno());
  26.   }
  27.  $row2 = mysql_fetch_array($result2);
  28. }
  29. ?>


Masakryczny kod, nie lepiej zamiast iterować po wynikach zapytania zrobić:

  1. SELECT * FROM magazyn m INNER JOIN kategorie k  ON (k.id = m.id) $where


co do samego cache dwie rzeczy:
- po pierwsze natywny cache w MySQL
- po drugie memcache, można cachować w nim tablicę wyniku, dobrze jest to opisane w manualu php
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.