-3

我当前的应用程序对 PHP 页面进行 ajax 调用,该页面向我们的 Oracle 平台上的 JSP 页面发出 API 请求。目前,PHP 脚本只相信从 JSP 返回的有效数据并将{true}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 回答