Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nawiązywanie połączenia z MySql - jaka zasada?, Jak powinno się to robić.
ednet
post 27.10.2005, 20:37:07
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 28.06.2005

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


Witam
Mam dość obszerny systemik w php. Przy niektórych wywołaniach wykonywanych jest bardzo wiele funkcji jednocześnie. Do tej pory w każdej funkcji includuję plik connect.php z poniższą zawartoscią:
  1. <?
  2. $dbhost = "localhost";
  3. $dbuname = "qqq";
  4. $dbpass = "qqq";
  5. $dbname = "_wwww";
  6.  
  7. $conn = mysql_connect("$dbhost", "$dbuname", "$dbpass");
  8. mysql_select_db("$dbname", $conn);
  9. ?>

Jest to oczywiście mało wydajne. Jak można to zmienić?

Pomysł 1:
Do każdej funkcji przekazywać jako parametr zmienną $conn. Skuteczne ale mało praktyczne w mojej sytuacji bo nie chcę zmieniać parametrów we wszystkich funkcjach. Dodatkowo w większych systemach nie spotkałem raczej takiego rozwiązania.

Pomysł 2:
Ustanowienie zmiennej $conn jako globalnej i chyba nie trzeba będzie includować connect.oho do wszystkich funkcji aby dzialal mysql. Najwygodniejsze rozwiązanie, jednak nie wiem jak się ma to z bezpieczeństwem.

Pomysł 3:
Połaczenie jest umieszczone w funkcji .

  1. <?php
  2. function lacz_bd()
  3. {
  4.  $wynik = @mysql_pconnect("localhost", "zawartosc", "haslo");
  5.  if (!$wynik)
  6. return false;
  7.  if (!@mysql_select_db("zawartosc"))
  8. return false;
  9.  
  10.  return $wynik;
  11. }
  12.  
  13.  
  14. ?>

Wywołanie w przykładowej funkcji:
  1. <?php
  2. function pobierz_rekord_artykulu($artykul)
  3. {
  4. $lacz = lacz_bd();
  5. $sql = "select * from artykuly where id = '$artykul'";
  6. $wynik = mysql_query($sql, $lacz);
  7. return(mysql_fetch_array($wynik));
  8. }
  9.  
  10. ?>


W tym sposobie nie trzeba się martwić o wciąganie połączenia jako parametru. Ta funkcja jest widoczna w innych funkcjach jednak obawiam się że z każdym wywołaniem funkcji lacz_bd() nawiązywane jest połączenie z mysql. Jesli wykonywanych jest np 30 różnych funkcji działających na bazie to jest nawiązywanych tyle samo połączeń. Czy w pomysle 2 jest jedno nawiązanie połączenia czy nawiązywane jest ono w każdej funkcji posiadającej jakieś zapytanie SQL?

Wiem że można użyć mysql_pconnect jednak szukam rozwiązania/zasady tworzenia połączenia z bazą. Funkcja mysql_pconnect nieraz jest wyłączona na serwerze i działa tylko z php działającym jako moduł.

Jak można rozwiązać ten problem?

ednet


~mike_mech
Go to the top of the page
+Quote Post

Posty w temacie


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 - 04:33