ログ日記

作業ログと日記とメモ

CPU100%の原因が判明した

プロファイラを使ってやっと分かった。
Flexyでは@(エラー制御演算子)を使っている箇所がある。


で自分のフレームワークでは標準エラーを書き換えてるんだけど、エラーが発生するたびにdebug_backtrace()を呼び出している。
@がついているから表示はされないものの、かなりの数のバックトレースを内部で計算していたようだ。


エラー処理クラスの処理の流れを変更してバックトレースを呼び出す前に条件文で逃げる。


しかしWebではこれでOKとして、ファイル出力やメールにNoticeレベルのエラーを書き込むように設定している場合、Flexyを使っていたら山のようなエラーが出力される・・。
何とかせねば。


# HTML/Template/Flexy/Token/Tag.php の146行目
# @を削除してisset() && とすることにより修正した