Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqGrid-PHP的高内存使用率_Php_Memory_Jqgrid_Memory Management - Fatal编程技术网

jqGrid-PHP的高内存使用率

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

我正在将大量数据(大约60000个条目)加载到基于jqgrid的网格中(我使用分页…以每页显示的记录数计算,可以达到近3000页),我发现PHP使用了大量内存(超过128mb),这导致了一个错误。我将可用内存量增加到256mb,现在可以正常工作了,但我想知道是什么原因导致了这种情况,我能做些什么

设置我的网格时使用的代码:

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实现这一点,但我认为示例中会有一些东西。