Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Kohana]PDO - połączenie z bazą danych, Jak sprawdzić, czy już istnieje
m.e.n.t.o.s.
post 18.05.2010, 20:29:32
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
pedro84
post 18.05.2010, 20:43:36
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.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
m.e.n.t.o.s.
post 18.05.2010, 20:48:09
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 19.05.2010, 06:31:03
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


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
thek
post 19.05.2010, 07:45:31
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.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
phpion
post 19.05.2010, 08:12:15
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 21.05.2010, 19:51:10
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 19:31