CPU100%の原因が判明した
プロファイラを使ってやっと分かった。
Flexyでは@(エラー制御演算子)を使っている箇所がある。
で自分のフレームワークでは標準エラーを書き換えてるんだけど、エラーが発生するたびにdebug_backtrace()を呼び出している。
@がついているから表示はされないものの、かなりの数のバックトレースを内部で計算していたようだ。
エラー処理クラスの処理の流れを変更してバックトレースを呼び出す前に条件文で逃げる。
しかしWebではこれでOKとして、ファイル出力やメールにNoticeレベルのエラーを書き込むように設定している場合、Flexyを使っていたら山のようなエラーが出力される・・。
何とかせねば。
# HTML/Template/Flexy/Token/Tag.php の146行目
# @を削除してisset() && とすることにより修正した