应用程序在浏览器中超时但不在命令行中

时间:2012-12-15 23:41:00

标签: php mysql codeigniter shell

我正在使用CodeIgniter和MySQL构建一个Web应用程序。我对这个感到困惑:

我有一个MySQL视图,它可以为3个表提供池,其中一个表有大约600,000行数据。在此视图中,我进行以下查询:

SELECT *, AVG(value_avg) hourly_value_avg, AVG(count) hourly_count_avg, (AVG(value_avg) * AVG(count)) hourly_time_consumed FROM (`perf_view`) GROUP BY `event_id`

通过MySQL客户端需要大约5秒才能得出30个结果,通过命令行,调用执行查询的确切控制器和方法,它需要大致相同,问题是,当我点击页面时在浏览器中,我收到以下错误:

Error Number: 2013
Lost connection to MySQL server during query

读到这个错误,我发现它可能是一个客户端错误,即PHP超时,而不是数据库。我有点困惑,有没有人遇到过同样的问题?

我真的很感激我能得到的任何帮助:)

1 个答案:

答案 0 :(得分:0)

在您的控制器构造函数或任何函数中,您可以尝试通过codeigniters框架扩展脚本使用的时间和内存。可以使用以下命令设置这些内容。

set_time_limit(0);     // set the execution time to any time. in my case infinite time
ini_set('memory_limit', '256M');      // set the memory use to whatever here 256 megs

您的情况听起来可能是内存问题。 600,000条记录很容易破坏PHP配置或codeigniter配置中的内存限制。两者通常设置为低,如果您的600,000记录查询返回一个包含许多列的表的公平块,我可以看到值得检查的内存限制问题。祝你好运。