我有一个游戏,分为三个世界。今天我在游戏中更新了世界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