众所周知,在高并发的状态下,直接使用 PHP 读写同一个文件时,可能会导致文件内容丢失,于是乎就需要额外的代码来解决这个问题。大致的思路是先使用 flock
函数对原文件进行锁死,再来读写。
下面的这个函数是从大名鼎鼎的可道云的代码中找到的。#(太开心)可道云相信大家都不会陌生,它是一个无数据库的程序,因此配置存储全都是靠这个函数完成的,所以这段代码的安全性和普适性绝对毋庸置疑,可以放心的用于项目中(注意尽量保留原作者的版权信息就行了)。
代码的原版位于可道云的 /app/function/file.function.php
第 729 行左右。原版代码的逻辑是 写文件时如果原文件不存在,则直接返回 false
,我把这一部分稍微修改了一下,改成了 如果目标文件不存在,则创建文件并写入。[wb_dog13]
不多说了,全部的代码如下:
后记
可道云的代码里其实还有大量的封装好的非常好用的函数,仔细研究研究绝对受益匪浅。
本文作者为小畅,转载请注明。