【发布时间】:2011-01-20 22:15:51
【问题描述】:
你好,
如果我有一个 php 脚本和一个文本文件,并且 2 个用户同时将一个长文本字符串附加到文本文件中,会发生什么?它还会通过吗?它是被缓冲的,所以它们都被附加了,还是被丢弃了?
【问题讨论】:
-
PHP 同步文件写入 的可能重复项。那里的答案也应该涵盖这个问题:stackoverflow.com/questions/1209688/…
标签: php
你好,
如果我有一个 php 脚本和一个文本文件,并且 2 个用户同时将一个长文本字符串附加到文本文件中,会发生什么?它还会通过吗?它是被缓冲的,所以它们都被附加了,还是被丢弃了?
【问题讨论】:
标签: php
通过使用fopen 和c 模式参数,您可以强制文件被锁定,直到您fclose 文件。这将不允许多人同时写入文件。通常,文件系统会默认执行此操作(取决于操作系统配置),但是,使用 mode 参数将涵盖您的基础。
【讨论】:
具体情况取决于正在写入的数据的平台和大小,但是如果两个进程都开始在文件中的相同位置写入,那么可以说最后一个通常会胜出。但是,您最终也可能会遇到交错的数据,尤其是在一次写入大量数据时。
看一下flock()。操作系统并没有完全“为你做”。
【讨论】:
通常操作系统会在写入过程中锁定文件,因此其他进程必须等待此写入过程完成才能开始写入。
因此它应该包括一个客户端的延迟或 fopen() 期间的 PHP 警告/错误。取决于代码的工作方式以及您使用的功能。
【讨论】: