Zend_Log如何防止在写入日志消息时出现争用条件



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

有谁知道原因吗?

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

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

了解来自多个进程的并发文件写入

O_APPEND文档

最新更新