阻止多个会话同时访问同一文件

3

在GD库正在访问文件时,是否可能锁定该文件以防止其被打开?

我想要实现的是类似于数据库中“可串行化”隔离级别的操作…… 我希望确保只有一个会话/用户可以同时访问图像以避免“脏读”。

我的应用程序允许用户将所选的图像添加到更大的图像中。

例如:

  • 大图像为空
  • Raj和Janet上传他们的图像
  • Raj的会话打开了大图像。
  • 1毫秒后,Janet的会话打开了大图像。
  • Raj的会话添加并保存了他的图像到大图像中
  • 1毫秒后,Janet的会话添加并保存了她的图像的版本到大图像中。
  • 结果Raj的图像没有出现在最终图像中,因为Janet的版本覆盖了它。

希望这样已经足够清楚了。

1个回答

2

请查看flock。你可以锁定正在工作的文件,或在文件系统中创建一个“锁文件”,让所有的脚本都检查它。


它看起来很完美,我唯一的担心是如果某个文件永久锁定了怎么办.. 有没有什么方法可以防范这种情况? - Pablo
当文件关闭时,锁定将被释放,因此唯一的问题是如果您的进程挂起而没有关闭(即成为僵尸进程)。 - Emil Vikström

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接