Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Nedoumice oko konekcije na bazu i singleton patterna...

PHP
  • 2 odgovora
  • 2.960 pregleda

Najnovija ↓

Nedoumice oko konekcije na bazu i singleton patterna... 02.02.2007. u 12:03 · pre 240 meseci #1
Pozdrav drugari. Imam jednu logičku nedoumicu oko konekcije na (mysql) bazu po modelu singleton patterna. Kod je sledeći:

Code:

class DB {
    private static $_singleton;
    private $_connection;

    private function __construct(){
            $this->_connection = mysql_connect("servername","username", "password");
    }
    public static function getInstance(){
        if (is_null (self::$_singleton)) {
            self::$_singleton = new DB();
        }
        return self::$_singleton;
    }
}

     //main program   

    $db = DB::getInstance();


Dakle, kao što se zna, singleton pattern onemogućava višestruko instanciranje, već (u ovom slučaju) uvek vraća jedan te isti resource link za bazu.

Ako uzmemo u obzir sledeći scenario: web aplikacija sa stotinak aktivnih korisnika, koji u diskretnim vremenskim intervalima pretražuju bazu, upisuju u nju, i pregledaju tabele.

Pitanje:Da li je dovoljno svim korisnicima dostaviti jedan:
$db = DB::getInstance();
...i ne razmišljati dalje o konekciji na bazu, ili je potrebno svakom korisniku dodeliti poseban resource link (tj. svakom korisniku instancirati novi objekat koji se konektuje na bazu)?


Napominjem da bi se podaci o sesiji pojedinačnog korisnika čuvali standardnim PHP session mehanizmom.
Potpis
Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
Re: Nedoumice oko konekcije na bazu i singleton patterna... 02.02.2007. u 12:50 · pre 240 meseci #2
Code:

$this->_connection = mysql_connect("servername","username", "password");


Kada se koristi na ovaj nacin mysql_connect() funkcija pri prvom pozivu otvara konekciju na bazu i vraca resource, a pri svakom sledecem pozivu sa istim parametrima, ne otvara novi link, nego vraca prethodno otvoreni resource link. To radi na nivou samog php-a i u vecini slucajeva nemas potrebe da razmisljas o tome. Ukoliko zelis da se pri svakom pozivu otvara novi link (sto je opet u vecini normalnih slucajeva nepotrebno i/ili nepozeljno) mozes da kao cetvrti parametar mysql_connect() stavis true.
Potpis
Never trust an operating system you don't have sources for.
Re: Nedoumice oko konekcije na bazu i singleton patterna... 02.02.2007. u 12:56 · pre 240 meseci #3
Dakle, upravo to me interesovalo. So, pre svakog C/R/U/D zahteva prema bazi (Create/Retreive/Update/Delete) ja odradim jedno:
$db = DB::getInstance();
... i ne razmišljam?

Varijanta o kojoj sam razmišljao bila je i korišćenje persistent konekcija, ali kad bolje razmislim... čemu to?


HVALA!
Potpis
Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme