Zend_Log如何在编写日志消息时阻止竞争条件?

时间:2017-01-05 11:03:33

标签: php zend-framework zend-log

我已经查看了一些Zend_Log,它是Zend Framework的一个日志模块,但我没有看到它使用flock函数来防止竞争条件,如果有多个PHP脚本写入同一个文件。 据我所知,基于zend框架的Web应用程序将每个请求视为单独的php进程,因此状态不能在这些进程之间共享,因此保持写文件操作同步是必要的。

有谁知道原因?

1 个答案:

答案 0 :(得分:0)

让我回答一下我自己的问题,在检查了一些文档后,在UNIX系统中,O_APPEND打开的文件是线程和进程安全写入文件。但Windows是一个例外,也许php为Windows解释器做了一些包装。

如果打开的文件是PIPE或FIFO,那么它与纯文件不同。如果大小字节超过PIPE_BUF的大小,那么它不是原子的。

Understanding concurrent file writes from multiple processes

O_APPEND document