0

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

有谁知道原因?

4

1 回答 1

0

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

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

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

O_APPEND 文档

于 2017-01-06T04:20:24.167 回答