Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Zamykanie zapytań
Forum PHP.pl > Forum > Przedszkole
marcin0077
Witam

Mam taki kod:

  1. <?php
  2.  
  3. $row = $db->query_first("SELECT COUNT(*) AS itemCount FROM items WHERE isWaiting = '0'");
  4.  
  5. if (!isset($_GET["page"]))
  6. $_GET["page"] = 0;
  7.  
  8. $paginator = getPaginator($row["itemCount"],$_GET["page"],"glowna");
  9.  
  10. $showPerPage = (int)SHOW_PER_PAGE;
  11. $showMe = $_GET["page"]*$showPerPage;
  12. $randAdPlace = rand(2,$showPerPage);
  13.  
  14. $items = $db->query("SELECT *,ite.id,ite.addTime AS addTime, COUNT(comm.cid) AS commNo FROM items AS ite LEFT OUTER JOIN comments AS comm ON comm.picId=ite.id LEFT JOIN users ON (users.uid=ite.uId) WHERE ite.isWaiting = '0' GROUP BY ite.id ORDER BY ite.addTime DESC LIMIT " . $showMe . ", " . $showPerPage);
  15.  
  16. $i = 0;
  17. while ($row = $db->fetch_array($items)) {
  18. $i++;
  19.  
  20. $addClass = ($i < $showPerPage) ? ' morespace' : '';
  21.  
  22. if ($i == $randAdPlace) {
  23. ?>
  24. <div class="contener3">
  25. <div class="advertItems">
  26. <?php
  27. echo getGoogleAd('pub-xxxxxxxxxxxxxx','xxxxxxxxxxxx',336,280,'http://strona.pl/rek/kwadrat.html');
  28. ?>
  29. </div>
  30. </div><br>
  31. <?php
  32. }
  33.  
  34. $preLink = '';
  35. echo '<div class="contener">';
  36. require("includes/item.inc.php");
  37. echo '</div><br>';
  38. }
  39.  
  40. if($i == 0) {
  41. echo @TEXT_PAGE_NULL;
  42. } else {
  43. ?>
  44. <div class="contener2">
  45. <div class="paginator">
  46. <?php
  47. echo getGoogleAd('pub-xxxxxxxxxxxxxxx','xxxxxxxxxx',728,90,'http://strona.pl/rek/jd.html');
  48. echo $paginator;
  49. ?>
  50. </div>
  51. </div>
  52. <?php
  53. }
  54. ?>


i mam pytanie czy te zapytania mysql powinny być jakoś kończone/zamykane - $db->close()?
elmozaur
nie. po wykonaniu wszystkich zapytan baza zamknie polaczenie
Fifi209
Cytat(elmozaur @ 15.07.2011, 14:55:17 ) *
nie. po wykonaniu wszystkich zapytan baza zamknie polaczenie

Zamknie na koniec wykonywania skryptu, a jeżeli skrypt będzie wykonywał się dłużej? Baza też ma ograniczoną liczbę połączeń, które może obsługiwać jednocześnie.

@autor
Jeżeli skończysz z zapytaniami, to zamknij sam połączenie.
marcin0077
Gdzie ustawić to zamykanie połączeń zaraz po "$items = $db->query" ? a może na końcu strony?
Fifi209
Cytat(marcin0077 @ 15.07.2011, 15:32:36 ) *
Gdzie ustawić to zamykanie połączeń zaraz po "$items = $db->query" ? a może na końcu strony?

Jeżeli wiesz, że nie będziesz wykonywał kolejnego zapytania to przy ostatnim $db->query, aby wcześniej zamknąć połączenie (przed wygenerowaniem reszty strony)i zwolnić zasoby.
marcin0077
a czy nie powinno być zamykane przy każdym? Bo tak to otworzyły się 2 połączenia a zamknięte zostało 1


  1. $row = $db->query_first("SELECT COUNT(*) AS itemCount FROM items WHERE isWaiting = '0'");
  2.  
  3. if (!isset($_GET["page"]))
  4. $_GET["page"] = 0;
  5.  
  6. $paginator = getPaginator($row["itemCount"],$_GET["page"],"glowna");
  7.  
  8. $showPerPage = (int)SHOW_PER_PAGE;
  9. $showMe = $_GET["page"]*$showPerPage;
  10. $randAdPlace = rand(2,$showPerPage);
  11.  
  12. $items = $db->query("SELECT *,ite.id,ite.addTime AS addTime, COUNT(comm.cid) AS commNo FROM items AS ite LEFT OUTER JOIN comments AS comm ON comm.picId=ite.id LEFT JOIN users ON (users.uid=ite.uId) WHERE ite.isWaiting = '0' GROUP BY ite.id ORDER BY ite.addTime DESC LIMIT " . $showMe . ", " . $showPerPage);
Fifi209
Nie, to żadne dwa połączenia. Dwa zapytania ale jedno połączenie.
marcin0077
ok dzięki
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.