PHP PCNTL -可信任的错误记录


PHP PCNTL - trustful error logging possible?

我当前的应用程序对PHP页面进行ajax调用,该PHP页面向Oracle平台上的JSP页面发出API请求。目前,PHP脚本只是相信从JSP返回的有效数据,并向ajax成功处理程序发送一个{true} json响应。ajax现在被设置为优雅地失败,所以无论如何它都会工作,但这对我们没有帮助。

我的任务是,一旦jsp文件设置为抛出异常,我将让PHP相应地处理异常,记录错误,并返回json {false}响应。

我们担心,如果日志记录太全面,可能会花费太长时间。这个过程(没有日志记录或错误检查)目前非常快,速度是一个关键因素。为了规避这个潜在的瓶颈,我的想法是告诉PHP"记录错误,但不要等待任何被记录的确认,只返回false"。

我知道PCNTL分叉是可能的,但我不愿意分叉整个进程,因为我可以看到,如果我们分叉的话,这是非常需要内存的。

是否有可能做到我所希望的,我将如何实现这一点,即使没有PCNTL?

PCNTL将是一个坏主意,正如你所猜到的。

您是否对日志记录性能进行了基准测试?你可能正在尝试过早的优化。可以理解的是,由于是ajax,您希望使它尽可能地响应,但是如果日志记录将引入0.01秒的平均延迟,那么也许值得付出代价。

如果可以使用syslog,也要确保对fopen()/fwrite()/fclose()syslog()之间的性能差异进行基准测试。

用PHP进行异步操作是非常困难的。假设在PHP进程中进行日志记录开销太大,我会用Java或其他语言编写一个小日志记录器,并通过HTTP POST(例如)向它发送日志消息。使用像Log4J或Logback这样的库,您已经完成了一半的工作,您只需要处理传入的消息并将它们记录在工作线程中。因为我觉得你的设置还不够鲁伯·戈德伯格式……:)