mysql_pconnect() - Nginx, php5-fpm, mysql


mysql_pconnect() - Nginx, php5-fpm, mysql

我有一个游戏,分为三个世界。今天我在游戏中更新了世界3。

更新mysql_pconnect后,随机更改选定的数据库,尽管我已经设置了数据库"s3"。几秒钟后,我在我的网站上看到了数据库"s2"或"s1"中的数据。

我为我的数据库"s3"创建了一个新用户,当我连接时,一切都可以,但mysql为一个用户连接创建了新线程,那么会有什么问题呢?

在任何情况下,我都会为mysql_pconnect使用相同的用户,所以我应该为每个数据库创建一个用户?

class MySQL {
static public function ConnectToDb($Host, $User, $Password, $Database) {
    @mysql_pconnect($Host, $User, $Password) or die(mysql_error());
    mysql_select_db($Database);
    mysql_set_charset('utf8');
}
$System['BazaDanych'] = array('login' => 'root', 'haslo' => '', 'host' => 'localhost', 'baza' => 's2');
MySQL::ConnectToDb($KonfiguracjaSystemu['BazaDanych']['host'] , $KonfiguracjaSystemu['BazaDanych']['login'] , $KonfiguracjaSystemu['BazaDanych']['haslo'] , $KonfiguracjaSystemu['BazaDanych']['baza']);

这是我本地配置中的代码。

TOm

首先,在连接时,函数将首先尝试查找一个已使用相同主机、用户名和密码打开的(持久)链接。如果找到一个,将返回它的标识符,而不是打开新的连接。

其次,脚本执行结束时,与SQL服务器的连接不会关闭。相反,该链接将保持打开状态以供将来使用(mysql_close()不会关闭由mysql_pconnect()建立的链接)。

阅读更多关于这个:

http://php.net/manual/en/function.mysql-pconnect.php