我已经查看了一些Zend_Log,它是Zend Framework的一个日志模块,但我没有看到它使用flock函数来防止竞争条件,如果有多个PHP脚本写入同一个文件。 据我所知,基于zend框架的Web应用程序将每个请求视为单独的php进程,因此状态不能在这些进程之间共享,因此保持写文件操作同步是必要的。
有谁知道原因?
答案 0 :(得分:0)
让我回答一下我自己的问题,在检查了一些文档后,在UNIX系统中,O_APPEND打开的文件是线程和进程安全写入文件。但Windows是一个例外,也许php为Windows解释器做了一些包装。
如果打开的文件是PIPE或FIFO,那么它与纯文件不同。如果大小字节超过PIPE_BUF的大小,那么它不是原子的。
Understanding concurrent file writes from multiple processes