-3

私の現在のアプリケーションは、PHPページへのajax呼び出しを行い、Oracleプラットフォーム上のJSPページへのAPIリクエストを行います。{true}現在、PHPスクリプトは、有効なデータがJSPから返されたことを単純に信頼し、 json応答をajaxサクセスハンドラーに送り返します。ajaxは現在正常に失敗するように設定されているため、関係なく機能しますが、役に立ちません。

私の仕事は、jspファイルが例外をスローするように設定されたら、それに応じてPHPに例外を処理させ、エラーをログに記録して、json{false}応答を返すことです。

包括的すぎると、ロギングに時間がかかりすぎるのではないかと心配しています。このプロセス(ロギングやエラーチェックなし)は現在非常に高速であり、速度が重要な要素です。この潜在的なボトルネックを回避するための私の考えは、PHPに「エラーをログに記録しますが、何かがログに記録されたという確認を待たずに、falseを返すだけです」と伝えることです。

PCNTLでフォークが可能であることは知っていますが、フォークする場合は非常にメモリが必要であることがわかるため、プロセス全体をフォークすることを躊躇します。

PCNTLを使用しなくても、私が望んでいることを実行することは可能ですか?また、これをどのように達成できますか?

4

1 に答える 1

1

ご想像のとおり、PCNTL は悪い考えです。

ロギングのパフォーマンスが実際にどのようなものになるかをベンチマークしましたか? 時期尚早の最適化を試みている可能性があります。当然のことながら、これは ajax であるため、可能な限り応答性を高めたいと考えていますが、ロギングによって平均 0.01 秒の遅延が発生する場合は、コストに見合う価値があるかもしれません。

また、syslog の使用がオプションである場合は、fopen()/ fwrite()/fclose()とのパフォーマンスの違いを必ずベンチマークしてください。syslog()

PHP で非同期処理を行うのは非常に困難です。PHP プロセスでのロギングが高すぎると仮定すると、Java などで小さなロガーを作成し、HTTP POST 経由でログ メッセージを送信します (たとえば)。Log4J や Logback のようなライブラリを使用すると、作業の半分はすでに完了しています。着信メッセージを処理してワーカー スレッドに記録するだけで済みます。私はあなたのセットアップが十分にRube Goldbergishだとは思わないので... :)

于 2011-07-12T18:12:17.703 に答える