Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php+mysql] Otwieranie połączeń do MySQL
misieq
post 1.11.2006, 21:31:15
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 1.11.2006

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


Sytuacja: napsiałem sobie prostą klasę do obsługi połączeń mysql (na podstawie pewnego artykułu smile.gif), klasę obsługi sesji, autoryzacji itp itd. Ogólnie rzecz biorąc w tych klasach korzystam z mysql'a. I tutaj pytanie: w jaki sposób łaczyć się z bazą danych? Chodzi mi o to, czy przy każdej funkcji klasy otwierać nowe połączenie a po zakończeniu zamykać je? Czy otworzyć jedno "megapołaczenie" winksmiley.jpg na początku skryptu, potem używać klas i na końcu zamknąć je?

Sorki, jesli to pytanie jest "lame" ale jakoś nie znalazłem odpowiedzi na pytanie a obiektowo dopiero wczoraj zacząłem się w php bawić i brakuje mi takich "wzorców" dla OOP. Dzięki z góry za odpowiedź,

msq
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
treewood
post 1.11.2006, 22:48:02
Post #2





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 18.01.2003

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


Mysle, ze otwarcie stalego polaczenia (jesli korzystasz z serwera bazodanowego zewnetrznego) mysql_pconnect jest dobrym rozwiazaniem. Napewno nie laczyc sie z serwerem za kazdym razem gdy zapodajesz jakies zapytanie SQL'owe gdyz rozwiazanie to nie jest wydajne.

Ten post edytował treewood 1.11.2006, 22:48:40


--------------------
Działam w OpenSolution.org, autor Quick.Cms i Quick.Cart już od ponad 10 lat
Go to the top of the page
+Quote Post
misieq
post 3.11.2006, 09:24:46
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 1.11.2006

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


No właśnie tak mi się zdawało, że otwieranie i zamykanie nie może być za wydaje. Dzięki wielkie za odpowiedź.

EDIT: Powstaje problem przy tym mysql_pconnect: za połączenia odpowiada plik database.php, ale jak wiadomo nie tylko w nim używam zapytań MySQL. Wszystkie pliki są includowane do index.php - ale php "nie widzi" obiektu gdy zainicjuję połączenie w index.php a potem będę próbował odwołać się w którymś z includeowanych plików.

EDIT2: Nikt się nie skusi, żeby coś proadzić? rolleyes.gif Próbowałem to wyguglać, ale jakoś same tutoriale o klasach wychodzą.

Ten post edytował misieq 3.11.2006, 09:25:11
Go to the top of the page
+Quote Post
revyag
post 3.11.2006, 09:32:18
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


Jeśli do index.php zaincludujesz pliczek konfiguracyjny z danymi potrzebnymi do połączenia z bazą. To wszystko co będziesz includował będzie korzystać z tego połączenia. Jeśli tak nie jest to źle includujesz lub łączysz się bazą.


--------------------
-------------

------
Go to the top of the page
+Quote Post
misieq
post 4.11.2006, 14:13:47
Post #5





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 1.11.2006

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


  1. <?
  2. include ('database.php');
  3. include ('auth.php');
  4. include ('session.php');
  5. include ('funcs.php');
  6.  
  7.  
  8. if (isset($_POST['login'])) {
  9. $db = new database (MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB);
  10. $auth = new auth($_POST['login'], $_POST['password']);
  11. if ($auth -> userid != 0) {
  12. $session = new session($auth -> userid);
  13. $user = new user();
  14. }
  15. $db -> close();
  16. }
  17. ?>


new database uruchamia połączenie mysql_pconnect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) i wybiera bazę MYSQL_DB
Ale połączenia tego "nie widać" już w pliku auth.php (podejrzewam, że w pozostałych też, ale zatrzymuje się już tutaj). Nie wiem czy dobrze Cie zrozumiałem revyag ale to powinno działać.

Error phpca:
Fatal error: Call to a member function on a non-object in /adresik/auth.php on line <nrlinii>

Ten post edytował misieq 4.11.2006, 15:01:27
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: 14.08.2025 - 02:19