Laravel5.5だよ。
リリース前のテスト中、Error: Allowed memory size of 134217728 bytes
が出た。
適当に「Laravel メモリ」で調べてみると、Eloquentを脳死でget()
してると結構起こるとのこと。
というわけでcursor()
だなんだで処理を置き換えて、さあこれで大丈夫だろうと思ったらどうにも直らない。
しかしmemory_get_usage
してみても10485760としか出ず。
結論
タイトルの通りだこの野郎。
Laravel Debugbar(の、おそらくクエリログ機能)が全部持ってってた。
memory_get_usage
で拾ってたのは処理本来のメモリ消費量だけだったってことだろうか。
.envにDEBUGBAR_ENABLED=false
オプションを書いてやると機能をまるっと停止できる。
手っ取り早く止めたいならこれでおk。
余談:↑に至るまでの経緯
「Laravel メモリ」で調べてた時に、デフォルトでメモリにクエリログ記録するから無効にしたほうがいいよーみたいな記事も見たのでとりあえず以下のコードを試してみた……のだが、効果がなかった。
\DB::connection()->disableQueryLog();
とりあえずIlluminate\Database\Connection.php
まで追っかけて、disableQueryLog()
の処理を見てみる。
public function disableQueryLog()
{
$this->loggingQueries = false;
}
loggingQueries
にfalseをセットしてる。しかしそのloggingQueries
は追ってみたらデフォルトでfalse。つまり\DB::connection()->disableQueryLog();
はやっぱり無意味。
バージョンアップで変わったのですかね?ともかく冤罪だった。
ふと思い出す。「Debugbarにクエリログ出てるやんけ!」
試しに止めたらさっくり動いたと。こんなんで丸一日潰したの結構悲しかった。
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
0件のコメント