Как преобразовать выборку getCollection в JSON?
Здравствуйте.
Больше полгода у меня на сайте собиралась статистика геолокации, все писалось в созданную таблицу Geolocation. Теперь хочу все эти координаты наложить как метки на карту Google Maps. По клику кнопки идет Ajax-запрос на выборку из БД, возвращается json-строка с координатами меток. Ну и там дальше идет javascript для визуализации меток на карте. Так вот, не могу вернуть выборку в JSON формате. Получается 500 Internal error
Если выполнить в консоли то
Что не так с этим Json?
Вот код выборки:
Больше полгода у меня на сайте собиралась статистика геолокации, все писалось в созданную таблицу Geolocation. Теперь хочу все эти координаты наложить как метки на карту Google Maps. По клику кнопки идет Ajax-запрос на выборку из БД, возвращается json-строка с координатами меток. Ну и там дальше идет javascript для визуализации меток на карте. Так вот, не могу вернуть выборку в JSON формате. Получается 500 Internal error
Если выполнить в консоли то
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 98570240 bytes) in /var/www/web4/www/core/xpdo/xpdo.class.php on line 2414Хотя в переменной $result есть массив объектов которые можно обработать в цикле и вывести их значения.Что не так с этим Json?
Вот код выборки:
<?php
$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_INFO);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
if (isset($_POST['action'])) {
$query= $modx->newQuery('Geolocations');
$query->where(array('acc:<' => 1000));
$result = $modx->getCollection('Geolocations', $query);
$json = $modx->toJSON($result);
return $json;
}
?> Комментарии: 8
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
А много вообще записей в БД?
Знак & после as и указание метода getCollection внутри foreach аналогично позволяет значительно снизить потребление памяти:-)
Если с памятью беда остается, то можно прогнать через getIterator:
Если и это не спасает, то вообще без объектов обойтись и работать на PDO.
Сделал попроще: