我知道file_put_contents()使得在PHP中向文件追加数据变得非常容易。我想尝试使用PHP "threads“从不同的PHP线程file_put_contents()
到同一个日志文件。从不同的PHP线程对同一文件运行file_put_contents()是否有风险,或者如果文件被锁定或被另一个线程访问,这些线程会很高兴地阻塞吗?
编辑:找到推荐flock()的a similar question,但风险问题似乎没有完全解决。这些是“原子”写操作吗?
发布于 2011-03-30 06:17:13
正如手册页上所说的(您为其提供了一个链接!):
// 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
标志防止重复写入
发布于 2011-03-30 06:19:21
答案很简单,是的。冲突可能会发生
使用像file_put_contents($location, $data, FILE_APPEND | LOCK_EX);
这样的东西
当您希望多个实例写入同一个文件时,您应该获取一个独占锁,这样在当前进程完成数据写入之前,其他进程都不能写入该文件
https://stackoverflow.com/questions/5479580
复制相似问题