0

私が使用しているアプリケーションのカスタムエラーハンドラーで...いらいらしていると思います.ここの誰かが洞察を提供してくれることを願っています.

サイトのデータ集約の一環として、カスタム スパイダーとパーサーは、コードベースの外で個別に構築されます。それらはデータベースに保存され、eval を介して Gearman プロセス内で実行されます。

エラーが発生した場合 (正規表現で区切り文字を忘れた場合や、コーヒーを飲んでいないときにゼロ除算エラーが発生した場合など) に、運営されている会社の ID 番号を挿入するカスタム エラー ハンドラーがセットアップされています。ほとんどの場合、このエラー ハンドラはうまく機能します。

ただし、eval されたコードに終了していないコメントがある場合、エラー ハンドラが使用されないことに気付きました。そのため、php エラー ログには、問題のある会社の ID 番号が含まれていません。

ハンドラーで次のエラー タイプを処理します。

  • E_WARNING
  • E_USER_WARNING
  • E_ERROR
  • E_USER_ERROR

ログには、コメント文字列エラーが「警告」であると記載されているため、カスタム ハンドラが呼び出されない理由がわかりません。

何かご意見は?

4

1 に答える 1

1

ドキュメントによると、次のようにカスタム関数error_handler()を使用することはできませんE_ERROR:

次のエラー タイプは、ユーザー定義関数では処理できません: E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING、および set_error_handler() が呼び出されるファイルで発生するほとんどの E_STRICT。

于 2013-10-22T20:49:05.597 に答える