Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sposoby połączeń z bazą
Forum PHP.pl > Forum > Bazy danych > MySQL
yalus
  1. <?php
  2.  
  3. // ***** Wariant I *****
  4. $link=mysql_connect ("localhost","root","");
  5. mysql_select_db ('baza');
  6. .
  7. .  (różne działania w bazie danych)
  8. .
  9. mysql_close($link);
  10.  
  11.  
  12. $link=mysql_connect ("localhost","root","");
  13. mysql_select_db ('baza');
  14. .
  15. .  (różne działania w bazie danych)
  16. .
  17. mysql_close($link);
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24. // ***** Wariant II *****
  25. //poczatek wykonywania skryptu
  26. $link=mysql_connect ("localhost","root","");
  27. mysql_select_db ('baza');
  28.  
  29.  
  30. function jeden
  31. {
  32. $zapytanie = "SELECT * FROM users WHERE user LIKE '$_GET[user]'";
  33. $wykonaj = mysql_query ($zapytanie) or die(mysql_errno() . ": " . mysql_error(). "n");
  34. $wiersz=mysql_fetch_array ($wykonaj);
  35. if (trim($wiersz['password'])==trim($_GET['pas']) and strlen(trim($_GET['pas']))>) {wykonaj zadanie}
  36. }
  37.  
  38.  
  39. function dwa
  40. {
  41. $zapytanie = "SELECT * FROM users";
  42. $wykonaj = mysql_query ($zapytanie) or die(mysql_errno() . ": " . mysql_error(). "n");
  43.  
  44. while($wiersz=mysql_fetch_array ($wykonaj))
  45. {
  46. $wiersz['user'];
  47. }
  48.  
  49. //koniec wykonywania skryptu
  50. mysql_close($link);
  51.  
  52. ?>



witam
od pewnego czasu borykam sie z pewnym problemem, mianowicie jaki sposób połączenia z bazą jes najbardziej optymalny:

wariant I tj, każdo zapytanie do bazy poprzedzone jest podłączeniem sie do niej wybraniem odpowiedniej tabeli, przeprowadzeniem żądanych opeacji i zakonczeniem połączenia z bazą
czy
wariant II tj, połączenie z bazą następuje na poczatku wykonywania skryptu i trwa przez cały czas a każde zapytanie sprowadza sie jedynie do wybranie odpowiedniej tabeli i przeprowadzenia na niej żądanych operacji

czy jest ktoś w stanie wskazać istotne różnice pomiędzy tymi dwoma wariantami, tzn. jaki wpływ mają one na stabilność pracy z bazą, itp

pozdrawiam yalus
lukir
Moim zdaniem to zależy od punktu widzenia:

Wariant I:
Lepszy dla innych użytkowników bazy - połączenie jest używane tylko gdy zachodzi taka potrzeba i nie utrudnia pracy innym (chociaż nie zawsze*)

Wariant II:
Lepszy dla klienta, który wykonuje skrypt - ciągłe łączenie się z bazą spowalnia pracę skryptu**.

Jednak argumenty * i ** są za tym aby wykorzystac wariant II, ponieważ na pewno odbije się to na wydajności naszego skryptu, a niekoniecznie na połączeniach innych użytkowników (musiałoby by ich sporo).

Tak to działało, gdy przetestowałem oba warianty z kilkunatoma użytkownikami naraz, aczkolwiek mogę się mylic.
mhs
Początkowo miałem czytając Twój temat miałem na myśli, że mówisz o tzw. trwałych połączeniach z bazą danych i ich wykorzystaniu. Jednak patrząc na Twój dopiero zauważyłem co masz na myśli.

Moim skromnym zdaniem:

Nie ma sensu (jeżeli jest inaczej nie proszę mnie poprawić) robić coś takiego:

  1. <?php
  2.  
  3. // kod odpowidzialny za polaczenie z baza danych
  4.  
  5. // zapytania sql i pobranie wynikow
  6.  
  7. // rozlaczenie z baza danych
  8.  
  9. // cos tam po drodze
  10.  
  11. // kod odpowidzialny za polaczenie z baza danych
  12.  
  13. // zapytania sql i pobranie wynikow
  14.  
  15. // rozlaczenie z baza danych
  16.  
  17. ?>


Wydaje mi się, że jeżeli już to tracisz czas właśnie na nawiązanie połączenia z bazą danych pisząć skrypty w ten sposób. Jeżeli chcesz zaoszczędzić trochę czasu to poczytaj o tzw. trwałych połączeniach z bazą danych (sprowadza się do tego lektura o funkcji mysql_pconnect" title="Zobacz w manualu php" target="_manual, a także zapoznaj się z lekturą pod tym linkiem: http://pl.php.net/manual/pl/features.persi...connections.php
lukir
Czyli jak to niestety często bywa, rozwiązanie problemu kryje się w lekturze manuala.
O czym wielu zapomina przed rozpoczęciem tematu. tongue.gif
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.