Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Kohana]PDO - połączenie z bazą danych, Jak sprawdzić, czy już istnieje
m.e.n.t.o.s.
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 13.11.2009

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


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. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
pedro84
post
Post #2





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Próbujesz wynaleźć koło na nowo. Przecież KohanaPHP ma bibliotekę Database, ma ORM, masz Query Buildera.
Go to the top of the page
+Quote Post
m.e.n.t.o.s.
post
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 13.11.2009

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


wiem, że ma

ale według mnie PDO jest wydajniejsze
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
thek
post
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post
m.e.n.t.o.s.
post
Post #7





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 13.11.2009

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


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 16:43