jqGrid-PHP的高内存使用率
我正在将大量数据(大约60000个条目)加载到基于jqgrid的网格中(我使用分页…以每页显示的记录数计算,可以达到近3000页),我发现PHP使用了大量内存(超过128mb),这导致了一个错误。我将可用内存量增加到256mb,现在可以正常工作了,但我想知道是什么原因导致了这种情况,我能做些什么 设置我的网格时使用的代码:jqGrid-PHP的高内存使用率,php,memory,jqgrid,memory-management,Php,Memory,Jqgrid,Memory Management,我正在将大量数据(大约60000个条目)加载到基于jqgrid的网格中(我使用分页…以每页显示的记录数计算,可以达到近3000页),我发现PHP使用了大量内存(超过128mb),这导致了一个错误。我将可用内存量增加到256mb,现在可以正常工作了,但我想知道是什么原因导致了这种情况,我能做些什么 设置我的网格时使用的代码: jQuery("#tlister").jqGrid({ url:'/foo/bar/baz', // JSON data
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'
});
编辑: 对/foo/bar/baz的ajax请求命中数据库,并立即获取该网格的所有条目。控制器调用模型中的方法,该方法返回:
return $this->getTable()->fetchAll()->toArray();
然后将该数据指定给视图,栅格将使用该数据。我猜抓取60000张唱片是很昂贵的,这就是我的问题的原因?所以,在每个网格页面加载上获取有限的数据子集可能会更有效?嘿,我认为您可以使用某种分页,每次更改页面时,都会进行ajax调用。这样,您就不需要加载所有记录 工作示例: 左侧菜单“加载数据”-“Json数据”
我认为这是您应该做的。您可能希望显示服务器端代码如何处理数据请求。我更新了我的问题以提供此信息。是的,如果您的网格在原始请求中提供分页数据,请将您的查询限制为这些值。例如,仅获取首字母上的前50条记录等@Jordan-正确,查询需要将结果限制在页面大小,例如50。jqGrid示例实际上展示了如何在MySQL中实现这一点。您可以根据需要将查询适配到其他数据库平台……他在问题中提到他正在使用分页。是的。我已经在使用分页,但我认为问题在于我正在检索整个数据集,然后将其加载到网格中,而不是只检索一小部分数据,然后在需要下一组分页数据时执行新的ajax请求。我不知道如何使用jqgrid实现这一点,但我认为示例中会有一些东西。