gpt4 book ai didi

php - PHP进程/服务器崩溃时如何避免文件死锁?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:36:27 25 4
gpt4 key购买 nike

我是 PHP 新手。我知道我可以使用 flock() 来锁定文件并避免在两个用户访问同一个 php 文件时向可锁定文件添加内容时出现竞争情况。

但是,如果 php 进程崩溃了怎么办?等待可锁定文件的下一个用户会怎样?如果服务器崩溃(有人拔掉插头)会怎样?锁是自动释放的吗?重启服务器后文件会保持锁定状态吗?

简而言之,PHP 是否确保正确处理这种紧急情况(即未明确释放锁)?如果不是,应该如何处理这些情况?如何从这些中恢复?

最佳答案

锁由操作系统处理。因此:

  • 如果一个进程崩溃,它持有的所有锁都会被释放(连同它持有的任何其他类型的资源)
  • 如果系统崩溃,锁就没有意义,因为它们不会“延续”到下一次重启

除了使用操作系统提供的文件锁定机制外,PHP 不需要做任何特殊的事情,所以一般来说您是绝对安全的。

但是,如果您的网络服务器设置使得每个请求都不由新进程处理,那么如果一个请求异常终止(假设一个线程被中止),锁将持续存在并阻塞所有进一步的锁定请求,很快就会导致 Web 服务器死锁。这是您真的、真的不应该使用不在请求之间提供进程级隔离的设置的众多原因之一(免责声明:我不是网络服务器专家——我在“不应该”方面可能是错误的一部分,尽管我对此表示怀疑)。

关于php - PHP进程/服务器崩溃时如何避免文件死锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8919833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com