php文件分片上传死锁,PHP进程/服务器崩溃时如何避免文件死锁?

这篇博客讨论了在PHP中使用flock()进行文件锁定时,如果PHP进程或服务器崩溃,锁的处理方式。操作系统会在进程崩溃时自动释放锁,而服务器重启后,锁不会保留。因此,PHP通常能正确处理这类紧急情况,但在某些特定服务器配置下,可能会导致死锁。建议确保每个请求都在新的进程中处理,以防止因异常终止导致的锁持久化问题。
摘要由CSDN通过智能技术生成

我是PHP的新手.我知道我可以使用flock()来锁定文件并避免竞争条件,当两个用户到达相同的php文件时,将内容添加到可锁定文件中.

但是,如果php进程崩溃会发生什么?等待可锁定文件的下一个用户会发生什么?如果服务器崩溃(某人拔插头)会发生什么?锁是否自动释放?重启服务器后文件是否会保持锁定状态?

为了缩短它,PHP是否确保正确处理这些危急情况(即未明确释放的锁定)?如果没有,应该如何处理这些情况?如何从这些中恢复?

解决方法:

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

>如果进程崩溃,它所持有的所有锁都会被释放(与它持有的任何其他类型的资源一起)

>如果系统崩溃,锁定无意义,因为它们不会“延续”到下一次重启

除了使用操作系统提供的锁定文件机制之外,PHP不需要做任何特殊操作,所以通常你是完全安全的.

但是,如果您的Web服务器设置使得每个请求都不由新进程处理,那么如果一个请求异常终止(假设线程被中止),则锁将持续存在并阻止所有进一步的锁请求,从而快速导致一个死锁的Web服务器.这是你真的,真的不应该使用不在请求之间提供进程级别隔离的设置的众多原因之一(免责声明:我不是网络服务器专家 – 我在“不应该”部分可能是错的,甚至虽然我对此表示怀疑).

标签:php,crash,release,file-locking

来源: https://codeday.me/bug/20190521/1146742.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值