use*_*715 2 php nfs file contention
我正在使用一个PHP Web应用程序,该应用程序会自动调整图像的大小,并且正在考虑将缓存的副本存储在安装了NFS的NAS上,因此更新图像时,我很容易刷新缓存。
我唯一担心的是,如果集群中有2个或更多服务器试图同时创建相同的图像缓存文件,那么NFS通常会发生什么情况?
当刷新内容更新的缓存时,很有可能会发生冲突,但是我没有很好的方法来测试开发中的这种情况,因为我只在一个盒子上工作。
有经验的人吗?
这取决于您如何打开文件。如果您以“附加”模式打开文件,则Unix / Linux实际上会将内容写入高速缓存,直到您创建换行符为止,然后它将新行粘贴到文件末尾(覆盖“文件结尾”字节模式)并写入新的“文件结尾”。在这种情况下,如果两个人试图同时写入同一文件,则两条写入行都将通过,并按接收顺序一次附加一行。因此,您可能会期望像:
This was the old contents
of the file
The first script added
The second script added
this line (script 1)
this line (script 2)
如果两个“写入”命令恰好同时到达(精确到纳秒精度),则操作系统实际上会创建一个中断状态。操作系统的处理方式取决于操作系统,但是大多数操作系统只会生成两个随机数来决定谁先执行。
如果您以“写入”模式打开文件(例如您想在中间添加内容),则实际上您必须锁定文件才能执行此操作。第二个PHP脚本将引发错误,提示它无法打开文件。
| 归档时间: | 
 | 
| 查看次数: | 1437 次 | 
| 最近记录: |