我有一个有时会返回 HTML 块的应用程序;在这种情况下,我必须返回一个大表并且内存耗尽。
我设置了一个宏,它检查要返回的数据是否不大于允许的 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 功能已经很基本了
- 清除我不需要响应的内存
理想情况下,我想使用第二个选项,但我不知道是否可以这样做......那么我应该怎么做才能避免超出内存限制?
编辑:这是我得到的错误
[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