首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从不同的PHP线程对同一文件运行file_put_contents()有风险吗?

从不同的PHP线程对同一文件运行file_put_contents()有风险吗?
EN

Stack Overflow用户
提问于 2011-03-30 06:14:27
回答 2查看 12.5K关注 0票数 29

我知道file_put_contents()使得在PHP中向文件追加数据变得非常容易。我想尝试使用PHP "threads“从不同的PHP线程file_put_contents()到同一个日志文件。从不同的PHP线程对同一文件运行file_put_contents()是否有风险,或者如果文件被锁定或被另一个线程访问,这些线程会很高兴地阻塞吗?

编辑:找到推荐flock()a similar question,但风险问题似乎没有完全解决。这些是“原子”写操作吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-30 06:17:13

正如手册页上所说的(您为其提供了一个链接!):

代码语言:javascript
复制
// Write the contents to the file, 
// using the FILE_APPEND flag to append the content to the end of the file
// and the LOCK_EX flag to prevent anyone else writing to the file at the same time
file_put_contents($file, $person, FILE_APPEND | LOCK_EX);

使用LOCK_EX标志防止重复写入

票数 28
EN

Stack Overflow用户

发布于 2011-03-30 06:19:21

答案很简单,是的。冲突可能会发生

使用像file_put_contents($location, $data, FILE_APPEND | LOCK_EX);这样的东西

当您希望多个实例写入同一个文件时,您应该获取一个独占锁,这样在当前进程完成数据写入之前,其他进程都不能写入该文件

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5479580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档