我正在运行一个小型Web服务,它从用户指定的数据库中获取数据,其中一些查询很重,而且通常需要比平时更长的时间,因为这些行包含base64图像和其他所需的内容。当我的查询耗时超过30秒时,CI会以某种方式崩溃。我试过使用$this->db->_error_number()
、$this->db->_error_message()
和
if ($this->db->trans_status() === FALSE) {
die('Wops, something weird happened...');
}
但他们都没有给我错误信息。有人知道如何捕捉这些超时错误并将其回复给用户吗?谢谢
编辑:
日志输出:
...
DEBUG - 2015-04-10 10:34:34 --> Controller "Main" Initialized
DEBUG - 2015-04-10 10:34:34 --> Helper loaded: log_helper
DEBUG - 2015-04-10 10:34:34 --> Database Driver Class Initialized
DEBUG - 2015-04-10 10:35:04 --> Final output sent to browser
DEBUG - 2015-04-10 10:35:04 --> Total execution time: 30.0145
...
请检查phpinfo()中的mysql.connect_timeout参数,并在需要时增加,因为这可能是查询超时的原因。
你可以在这里阅读更多关于的信息
您的查询花费了太多时间。如果您使用的是Web服务器(nginx或apache),则会有默认超时。在大多数情况下是30秒。您可以增加网络服务器上的超时时间。
还要检查php.ini max_execution_time
中的php超时参数或者尝试在php代码中直接将set_time_limit
放大。http://php.net/manual/en/function.set-time-limit.php