jqGrid - высокое использование памяти с PHP - PullRequest
0 голосов
/ 07 декабря 2010

Я загружаю большой объем данных (около 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 записей - это просто дорого, и это является причиной моей проблемы?Поэтому, возможно, более эффективным будет захват ограниченного набора данных при каждой загрузке страницы сетки?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2010

Рабочий пример:

http://www.trirand.com/blog/jqgrid/jqgrid.html

Левое меню «Загрузка данных» - «Данные Json»

Я думаю, это то, что вам следует сделать.

0 голосов
/ 07 декабря 2010

Эй, я думаю, вы можете использовать какую-то нумерацию страниц, чтобы каждый раз, когда вы меняли страницу, выполнялся вызов ajax. Таким образом, вам не нужно загружать все записи, чтобы начать с.

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:pager

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...