开发者

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()).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜