我正在使用此代码进行mysql连接
$con = mysql_connect("localhost:/var/lib/mysql/mysql.sock", "abc" , "xyz");
if (!$con)
{
die('Could not connect: ');
}
mysql_select_db("database_name", $con);我把这个文件放在我用来解析然后将数据存储在database.Now中的每个php文件的顶部。当原始站点关闭时,我的解析文件开始给出错误"Warning: mysql_connect():Too line in /home/clickindia/public_html/appuonline/db.php on line 2 many connections:“
我应该如何从这些errors.Do中拯救我的网站?你认为我应该使用mysql_close($con);但是如何以及在哪里?我在我的代码中使用模具是正确的,还是应该使用关闭等等,请帮助!
发布于 2009-07-06 08:18:14
你说你把这个连接代码放在“每个php文件的顶部”。
我的问题是:你会在一个页面上使用几个这样的文件吗?
如果是这种情况,那么对于一个页面,您应该只打开一次连接。这可能是错误的解释。
Artem的建议也是中肯的。
发布于 2009-07-06 07:10:26
这真的是一个系统管理员的问题--你应该联系你的系统管理员。如果您有专用的web主机和管理其配置的专用数据库主机,则有两种显而易见的解决方案:
使用量
在每个页面上连接的Web服务器可以使用很多。
发布于 2009-07-07 10:55:40
您可能想要考虑在数据库访问周围包装一个单例。好处:
您可以使用自己的单例,也可以从框架中获取单例,但根据您正在做的工作,这可能有些夸张。基本情况是这样的:
class DatabaseAccess {
private static $instance;
private $connection;
//declare the constructor private so we can only use it in this class
private function __construct( $host, $user, $pass, $db ) {
$this->connection = mysql_connect( $host, $user, $pass );
mysql_select_db( $db, $this->connection );
}
//provide access to a single instance
public static function instance() {
if ( ! isset( self::$instance ) ) {
self::$instance = new DatabaseAccess('host', 'user', 'pass', 'db');
}
return self::$instance;
}
//functions to execute/query the db
public function query( $query ) {
return mysql_query( $query, $this->connection );
}
}如果我要走这条路,我可能会通过控制对mysqli实例的访问并直接使用它来实现,而不是包装mysql_*函数。你可以在维基百科上找到更多关于单例模式的信息。
然后,您的应用程序将使用该类,如下所示:
$dba = DatabaseAccess::instance();
$result = $dba->query('select * from pages');
mysql_fetch_assoc($result);
//blah blah blah希望这能有所帮助!
https://stackoverflow.com/questions/1085757
复制相似问题