PHP, simple class for working with MySql and mysql_close problem
Here is a simple php class for working with database. The problem with this class is in __destruct
method, that launch mysql_close
function.
If I create two DB objects that are situated in code very close it cause an error. It looks like that mysql_close close all database connections, not just his own($this->dbLink). Why it is happens?
require_once("modules/required/OptionsReader/m_OptionsReader.php");
class DB{
private $dbLink;
public function __construct() {
$options = new OptionsReader();
$DBSettings = $options->getDBSettings();
$this->dbLink = mysql_connect($DBSettings->getAddress(),$DBSettings->getUserName(),$DBSettings->getPswd());
@mysql_select_db($DBSettings->getDBName()) or die( "Unable to select database");
mysql_query( "set names 'utf8'" );
}
public function __destruct() {
mysql_close($this->dbLink);
}
public function launchQuery($query){
return mysql_query($query);
}
}
?>
P.S. I know that the simple solution of this problem is just to make from __desctuctor close() function and launch it manually, but it w开发者_Go百科ill be great to understand what is going. Thank you
@zneak is correct. mysql_connect
does pool connections. The question is, why do you want to close the connection? In all my years of developing in PHP, I can count on one hand the number of times that I have used mysql_connect
, I almost exclusively use mysql_pconnect
From http://php.net/mysql_pconnect —
Establishes a persistent connection to a MySQL server.
mysql_pconnect() acts very much like mysql_connect() with two major differences.
First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.
Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (mysql_close() will not close links established by mysql_pconnect()).
精彩评论