我不确定null查询是什么,或者为什么会发出这样的查询,你有什么想法吗?
我添加了额外的代码,在代码结束时强制关闭连接,但显然这并没有起作用。
有人可以提供任何建议,以解决这个问题或开始调试吗?
谢谢
我在我的核心
MY_Controller
底部添加了以下内容。public function __destruct() {
$this->db->close();
}
MY_Controller
底部添加了以下内容。public function __destruct() {
$this->db->close();
}
我认为你在Codeigniter连接数据库的初始配置方面遇到了问题。
在这个页面上,你可以查看配置数组中的每个值:
https://www.codeigniter.com/user_guide/database/configuration.html
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "database_name";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
$db['default']['swap_pre'] = "";
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
这是一个基本的数组配置数据库,尝试将pconnect变量设置为FALSE。当它被打开时,系统不会关闭任何连接,并且它保持打开状态以进行任何时间的新查询。
如果你按照我说的将其设置为false,你的系统将继续完美地工作,但是codeigniter会在需要使用数据库时关闭和打开连接。
在这里,你可以在codeigniter论坛中查找并发布与pconnect变量有问题的人的帖子,可能对你有所帮助! http://codeigniter.com/forums/viewthread/177573/#842016
Codeigniter应该自动关闭数据库连接,但是你可以通过$this->db->close();
显式调用它。
参见http://codeigniter.com/user_guide/database/connecting.html
在查询完成后,您是否尝试过执行$this->db->close();
?
$db['default']['dbdriver'] = "mysqli";
我之前也遇到过同样的问题,解决方案是多方面的(直到所有问题一起出现才能发现单个问题)。除非你知道如何使用PConnect(正如其他人所说),否则应该关闭它。
另一件要考虑的事情是你的Web服务器是否是线程化的(例如Apache的工作模式-大多数常见的Web服务器都是这样)。如果你的流量很大,而且你的线程没有快速关闭,你可能会遇到一些并发的Web服务器/数据库服务器连接限制,或者耗尽内存/处理器资源。这可能会导致一些数据库连接挂起。
因此,我建议检查其他问题的迹象,不要假设数据库是问题的根源。它很可能只是一个症状。你有关于空连接的任何信息吗(比如哪个数据库用户生成了它们)?那可能会帮助你追溯回去...
编辑:我忘记的一件事-有时PHP错误可能会破坏CI的析构操作(从我的理解来看,这些操作会自动关闭连接),所以你也可以检查一下错误日志。