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();
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.
Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
(c) Alan ford