php - file_put_contents遇见文件排他锁是是否会队列等待

查看:102
本文介绍了php - file_put_contents遇见文件排他锁是是否会队列等待的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

file_put_contents('test.txt',$data,FILE_APPEND|LOCK_EX);
如上语句,假如正在进行大数据量的文件写入操作,会占用较长时间,后续的file_put_contents也要向该文件写入数据,由于文件具有排他锁,后续的file_put_contents是否会成为队列进行等待上一个文件写操作执行完毕

解决方案

是,file_put_contents的实现其实就是fopen,fwrite,fflush,fclose的这一套操作的简便实现。如果加上LOCK_EX,fopen之后还会还会执行一个flock,之后这段代码会一直阻塞到获放文件锁后才会继续执行。这个等待是以队列方式进行排序的.

另外过大的文件写入,可能会超过PHP脚本的最大执行时间,有丢失数据的风险,如果数据对你比较重要建议自行实现大数据量的写入队列

这篇关于php - file_put_contents遇见文件排他锁是是否会队列等待的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆