PHP写文件函数file_put_contents 加锁

file_put_contents写PHP的Cache文件,如果不加LOCK_EX就可能会存在同步问题,当一个进程写file时,只写到一半有另外的进程去require此文件,

这时就会因为文件不完整,导致PHP语法错误。所以涉及到同时读写同一个文件或数据时一定要加锁,否则在高并发的情况下会产生严重错误。

 

最近有个项目需要用file_put_contents函数写txt文件,由于需要频繁操作,所以经常出现前半截内容缺失的情况,非常苦恼。

后来查询资料发现,file_put_contents函数有个参数LOCK_EX非常有用,加上它之后,再也没有出现过内容缺失的情况了。

这个参数LOCK_EX的意思很直白,就是写文件时,先锁上这个文件,这样只允许某个客户端访问的时候写,其他客户端访问不能写了。

我的用法如下:

file_put_contents($file, $content, FILE_APPEND|LOCK_EX)

 

解释:
$file=>这个是写入文件的路径+文件名
$content=>这个是写入文件的内容
FILE_APPEND=>直接在该文件已有的内容后面追加内容
LOCK_EX=>写文件的时候先锁定,防止多人同时写入造成内容丢失

posted @ 2017-02-15 15:17  ー個亽の江湖  阅读(2759)  评论(0编辑  收藏  举报