Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana]PDO - połączenie z bazą danych
Forum PHP.pl > Forum > PHP
m.e.n.t.o.s.
Witam

Mam pewien problem, z którym próbowałem już walczyć na kilka sposobów.
Korzystam z frameworka Kohana, to mój pierwszy projekt w nim pisany. Do łączenia się z bazą danych używam interfejsu PDO. W konstruktorze klasy abstrakcyjnej wywołuję metodę, w której łączę się z bazą danych. Klasa ta jest dziedziczona przez inne klasy, gdzie chcę korzystać z tego identyfikatora i wykonywać zapytania. Skrypt wyrzuca mi błąd, że przekroczony został limit połączeń z bazą danych. Sprawa wydaje się być prosta, wystarczy w metodzie nawiązującej połączenie z bazą danych sprawdzać, czy takie połączenie już istnieje. niestety wyczerpały mi się już pomysły, jak to zrobić, męczę się z tym już od jakiegoś czasu i nie mogę z tego wybrnąć. Będe wdzięczny za jakieś podpowiedzi. Oto kod tej metody:

  1. private function init_PDO() {
  2. try
  3. {
  4. $this->connect = new PDO('mysql:host='.$this->PDO_host.';dbname='.$this->PDO_dbname, $this->PDO_username, $this->PDO_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES ".$this->PDO_database_encoding));
  5. $this->connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  6. }
  7. catch(PDOException $e)
  8. {
  9. echo $this->PDO_failed_communicat.$e->getMessage();
  10. }
  11. }
pedro84
Próbujesz wynaleźć koło na nowo. Przecież KohanaPHP ma bibliotekę Database, ma ORM, masz Query Buildera.
m.e.n.t.o.s.
wiem, że ma

ale według mnie PDO jest wydajniejsze
nospor
Na chwilę obecną Twoj problem nie ma związku z Kohaną jako taką - przenoszę.

Każdy Twoj obiekt inicjalizuje na nowo obiekt DBO - nic więc dziwnego ze szlag trafia liczbę połączeń. Obiekt DBO (a co za tym idzie połączenie do bazy danych) ma być utworzony tylko raz, a następnie ten jeden obiekt ma być używany.
Aby to zrealizować poczytaj o wzorcach, np:
Singleton
Rejestr
thek
Nospor ma rację. Zamiast notorycznie robić różne obiekty połączenia, zrób jeden i używaj go w reszcie. Przykładowo jako zmienna statyczna przechowująca identyfikator połączenia.
phpion
Cytat(pedro84 @ 18.05.2010, 21:43:36 ) *
Próbujesz wynaleźć koło na nowo. Przecież KohanaPHP ma bibliotekę Database, ma ORM, masz Query Buildera.

Popieram. Po co korzystasz z frameworka skoro i tak tak istotną rzecz jak połączenie z bazą danych starasz się pisać samodzielnie? Masz przecież modele czy po prostu Database::instance() więc z tego korzystaj.
m.e.n.t.o.s.
Ok, jednak będe korzystał z wbudowanej biblioteki Database w Kohanie. Interesuje mnie taka rzecz. Kohana, którą ściągnąłem ma sterownik do PDO Sqllite, a czy istnieje sterownik PDO Mysql? Myślałem, żeby przerobić po prostu ten sterownik z Sqllite, ale nie wiem, czy stworzenie tylko jednego nowego pliku to już wszystko, czego potrzeba.
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.