PHP 的文档页面 flock() 表明在 IIS 下使用它是不安全的。如果我在任何情况下都不能依赖 flock,还有另一种方法可以安全地实现同样的目标吗?

最佳答案

在所有想象的可能情况下,没有替代方案可以安全地实现相同的目标。这是由计算机系统和 the job is not trivial for cross-platform code 的设计决定的。

如果您需要安全使用 flock() ,请记录您的应用程序的要求。

或者,您可以创建自己的锁定机制,但必须确保它是原子的。这意味着,您必须测试锁,如果它不存在,则建立锁,同时您需要确保中间没有其他任何东西可以获取锁。

这可以通过创建一个表示锁的锁文件来完成,但前提是它不存在。不幸的是,PHP 没有提供这样的功能来以这种方式创建文件。

或者,您可以使用 mkdir() 创建一个目录并使用结果,因为它会在创建目录时返回 true,如果目录已经存在则返回 false

关于PHP flock() 替代方案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6967553/

10-12 16:26