Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php/mysql]proste cache
mateuszpi
post 1.09.2007, 14:28:32
Post #1





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 11.09.2006
Skąd: Jaworzno

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


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

Ten post edytował mateuszpi 1.09.2007, 14:29:23
Go to the top of the page
+Quote Post
Moli
post 1.09.2007, 15:35:24
Post #2





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

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


Myślę że to Ci pomoże.
Go to the top of the page
+Quote Post
mateuszpi
post 1.09.2007, 19:41:11
Post #3





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 11.09.2006
Skąd: Jaworzno

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


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. ?>


Ten post edytował mateuszpi 1.09.2007, 19:42:39
Go to the top of the page
+Quote Post
pink
post 2.09.2007, 13:50:51
Post #4





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 2.09.2007
Skąd: Sheffield, UK

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


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

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 01:25