我正在运行一个从用户指定的数据库中获取数据的小型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
...
答案 0 :(得分:3)
请检查phpinfo()中的 mysql.connect_timeout 参数,并在需要时增加,因为这可能是查询超时的原因。
您可以阅读有关此Here
的更多信息答案 1 :(得分:1)
您的查询需要花费太多时间。 如果你正在使用webserver(nginx或apache),他们有默认超时。 在大多数情况下,它是30秒。您可以增加网络服务器的超时时间。
同时检查php.ini max_execution_time
中的php超时参数
或者在php代码中直接尝试set_time_limit
更大。
http://php.net/manual/en/function.set-time-limit.php