Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] singleton a trzy bazy danych
patryczakowy
post 22.01.2011, 08:06:39
Post #1





Grupa: Zarejestrowani
Postów: 420
Pomógł: 44
Dołączył: 22.10.2008

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


Witam mam mały problem mam skrypt który korzysta z trzech baz danych założenie było takie żeby podczas wykonywania skryptu były maksymalnie trzy połączenia z bazą dlatego chciałem zimplementować wzorzec singleton dl a każdej z baz jednak problem jest taki że podczas wywołania klasy z połączeniem do drugiej bazy połączenie z pierwszą zostaje przerwane po niżej przykładowy kody
  1. class db_portal extends db{
  2.  
  3.  
  4. private function __construct() {
  5. $cfg['db']['host']='localhost';
  6. $cfg['db']['user']='xxxxxx';
  7. $cfg['db']['password']='xxxxx';
  8. $cfg['db']['name']='xxxxxx';
  9. $this->conn_id = mysql_connect($cfg['db']['host'],$cfg['db']['user'],$cfg['db']['password']);
  10. mysql_select_db($cfg['db']['name'],$this->conn_id);
  11. mysql_query("SET CHARACTER SET utf8");
  12. mysql_query("SET collation_connection = utf8_unicode_ci");
  13. if(! is_resource($this->conn_id)) {
  14. return false;
  15. }
  16. }
  17. static public function connect_db () {
  18. static $objDB;
  19. if(!isset($objDB))
  20. $objDB = new db_portal;
  21.  
  22. return $objDB;
  23. }
  24. }
  25. class db_portal2 extends db{
  26.  
  27.  
  28. private function __construct() {
  29. $cfg['db']['host']='localhost';
  30. $cfg['db']['user']='xxxxxx';
  31. $cfg['db']['password']='xxxxx';
  32. $cfg['db']['name']='xxxxxx';
  33. $this->conn_id = mysql_connect($cfg['db']['host'],$cfg['db']['user'],$cfg['db']['password']);
  34. mysql_select_db($cfg['db']['name'],$this->conn_id);
  35. mysql_query("SET CHARACTER SET utf8");
  36. mysql_query("SET collation_connection = utf8_unicode_ci");
  37. if(! is_resource($this->conn_id)) {
  38. return false;
  39. }
  40. }
  41. static public function connect_db () {
  42. static $objDB;
  43. if(!isset($objDB))
  44. $objDB = new db_portal2;
  45.  
  46. return $objDB;
  47. }
  48. }
  49. $DB=db_portal::connect_db();
  50. //zapytania z bazy 1
  51. $DB2=db_portal2::connect_db();
  52. // zapytania z bazy 2
  53. $DB->query($SQL);
  54. //problem objekt $DB istnieje ale niema już połączenia z bazą przez co zapytanie się nie wykonuje
  55. //nie pomaga nawet dodanie linii wcześniej $DB=db_portal::connect_db();

Klasa db to standardowa klasa mająca metody typu query fetch itp

Ma ktoś pomysł jak można to rozwiązaćquestionmark.gif?

Z góry dzięki za sugestie.

Ten post edytował patryczakowy 22.01.2011, 08:07:27


--------------------
Sztuką jest widzieć to czego nie widać.
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 - 15:57