1

CodeIgniter と MySQL を使用して Web アプリケーションを構築しています。私はこれに困惑しています:

3 つのテーブルをプールする MySQL ビューがあり、それらのテーブルの 1 つには最大 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秒かかります。問題は、ブラウザーでページにアクセスしたときです。 、次のエラーが表示されます。

Error Number: 2013
Lost connection to MySQL server during query

このエラーを調べたところ、おそらくクライアント エラーであることがわかりました。つまり、DB ではなく、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 に答える