1

我正在使用 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 超时,而不是数据库。有点迷茫,有没有人遇到过同样的问题?

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

4

1 回答 1

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 条记录查询返回包含许多列的表的相当大块,我可以看到值得检查的内存限制问题。祝你好运。

于 2012-12-18T05:38:31.070 回答