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 を実行しています) はすべてをクラッシュさせます。
理想的には、コードのこの時点で、次の 2 つのオプションを使用できます。
- 基本的なphpですべてを送信しますが、Laravel関数はすでにかなり基本的だと思います
- 応答に必要のないメモリをクリアする
理想的には2番目のオプションを使用したいのですが、これができるかどうかわかりません...では、メモリ制限を超えないようにするにはどうすればよいですか?
編集:これは私が得るエラーです
[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