関数 - php エラーログ 見方



PHPの内部構造-使用するエラーログ機能は何ですか? (1)

私はPHP拡張モジュールを作成しています(ただし、zend拡張モジュールのように見えるようになっています)。 ログインターフェイスに書き込む必要がある場合があります。

zend_error()は他の場所で使用されています。

  • github上でソースコードを読むzend_errorがzend / zend.hで宣言されていますが、関数の対応する定義を見つけることができませんでした

  • zend_errorが使用されているコンテキストを見ると、set_error_handlerによってコールが再ルーティング/迂回されると思われます

通常、ロギングはMINITとMSHUTDOWN(おそらくスクリプトによって定義されたエラーハンドラは何の影響もありません)で発生しますが、その間に時間があるかもしれません - そして私はある程度の整合性を探しています。 したがって、メカニズムの仕組みを理解しようとする。

MINIT / MSHUTDOWNでzend_error()を使用するのは安全ですか?

私はいつもデフォルトのエラーハンドラを呼び出すようにしますか?


まあ、私はPHP Wikiでこれを見つけました。 私はこれが古いと思いますが、Zend3にも当てはまると思います。

zend_errorを使わないでください

zend_error()は、エンジン内でのみ使用してください。 PHPの拡張機能の中では、PHPのエラー関数のみを使用します。 通常、php_error_docref()が最適です。 php_error_docref()は、現在の関数名のような余分な情報でエラーメッセージを拡張し、必要に応じて適切なエスケープ出力を行います。 zend_error()は、Zend EngineとTSRMがPHPの他の部分なしでコンパイルできるPHPのモジュラーアーキテクチャのため、Zend Engineによって使用されます。 したがって、エンジンはPHPレベルのAPIを使用できません。 この制限は拡張機能には存在しません。

zend_errorはエンジンでの使用のために書かれたものであり、拡張機能を構築するためのツールの1つとして設計されていないということです。 そのため、あなたが尋ねている詳細をカバーするドキュメンテーションを見つけることはまずありません。また、それが確実に機能しても、それを続行できない可能性があります。





c