jqgridベースのグリッドに大量のデータ(約60,000エントリ)をロードしています(私はページングを使用して、表示しているレコードの数が3,000ページ近くになりますページ)、私はPHPが大量のメモリ(128MB以上)を使用しているためにエラーが発生することがわかりました。利用可能なメモリ容量を256MBに増やしました。今は動作しますが、何が原因かと思いますが、何ができるのでしょうか?jqGrid - PHPでのメモリ使用量が多い
私のグリッドを設定するのに使用されるコード:
jQuery("#tlister").jqGrid({
url:'/foo/bar/baz', // JSON data
datatype: 'json',
mtype: 'POST',
colNames:['A', 'B', 'C', 'D', 'E'],
colModel :[
{name:'a', index:'a', sorttype:'integer', width:80, editable: true, edittype:'custom', editoptions: { custom_element:custelem,custom_value:custval }},
{name:'b', index:'b', sorttype:'integer', width: 80, editable: false},
{name:'c', index:'c', width: 150, editable: false},
{name:'d', index:'d', width: 150, editable: false, hidden:true},
{name:'e', index:'e', width:200, editable: false, formatter: changeTo},
],
editurl:'/foo/bar/bat',
pager: '#pager',
pgtext : "Page {0} of {1}",
rowNum:20,
loadonce: true,
rowList:[20,40,60,80,100],
width: 'auto',
height: 'auto',
caption: 'Foobar'
});
EDIT: へ/ fooの/バー/ bazには、データベースにヒットし、そのグリッドのエントリのすべてをつかむAJAXリクエストすぐに。コントローラはモデル内のメソッドを呼び出し、次の結果を返します。
return $this->getTable()->fetchAll()->toArray();
このデータはビューに割り当てられ、グリッドはそれを使用します。私は60,000レコードをつかむことは単純に高価で、それが私の問題の原因だと思いますか?だから、おそらく各グリッドページの負荷でデータの限られたサブセットをつかむほうが効率的だろうか?
サーバーサイドコードがデータの要求をどのように処理するかを示したい場合があります。 –
これを提供するために私の質問が更新されました。 – Lothar
はい、グリッドが元の要求でページングデータを提供している場合は、クエリをそれらの値に制限します。例えば。 –