Я загружаю большой объем данных (около 60 000 записей) в сетку на основе jqgrid (я использую пейджинг ... делает около 3000 страниц при количестве записей, отображаемых на странице), и я обнаружил, что PHPиспользует большой объем памяти (более 128 МБ), что вызывает ошибку.Я увеличил объем доступной памяти до 256 МБ, и теперь он работает, но мне интересно, что может вызвать это и что я могу с этим сделать?
Код, используемый при настройке моей сетки:
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'
});
РЕДАКТИРОВАТЬ: Ajax-запрос к / foo / bar / baz попадает в базу данных и захватывает все записи для этой сетки одновременно.Контроллер вызывает метод в модели, который возвращает:
return $this->getTable()->fetchAll()->toArray();
Эти данные затем присваиваются представлению, и сетка использует их.Я думаю, что захват 60 000 записей - это просто дорого, и это является причиной моей проблемы?Поэтому, возможно, более эффективным будет захват ограниченного набора данных при каждой загрузке страницы сетки?