У меня есть приложение, которое иногда возвращает куски HTML; в этом случае я должен вернуть большую таблицу, и память исчерпается.Laravel Response :: json() исчерпывает память
У меня есть макрос, который проверяет, что возвращаемые данные не превышают допустимый предел json;
Response::macro('jsonWithValidation', function($response) {
if(strlen(serialize($response)) > 125000000)
$response = array(
'status' => 200,
'execute_also' => array(
'notify("warning", "Data too large to be sent over json");'
)
);
return Response::json($response, $response['status']);
});
Этот сценарий работает как очарование; проблема, с которой я сейчас сталкиваюсь, заключается в том, что последние Response::json
исчерпывает память. Это означает, что мой ответ не слишком велик, чтобы его можно было послать через json, но метод Laravel (я запускаю Laravel 4.2) сбрасывает все.
В идеале, в этот момент кода я мог бы иметь два варианта:
- отправить все с основным PHP, но я считаю, что функция Laravel довольно простой уже
- ясно память я не буду необходимо для ответа
в идеале я хотел бы использовать второй вариант, но я понятия не имею, если это можно было бы сделать ... так , что я должен сделать, чтобы избежать превышения лимита памяти?
EDIT: Это ошибка я получаю
[05-May-2016 14:19:42 Europe/Rome] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 64 bytes) in C:\wamp\www\project_ski\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php on line 446
Вы делаете чек, но генерируете JSON в любом случае! Просто не делайте этого, если проверка не удалась. –