filesize多次执行陷阱

最近发现写的一个Smarty插件执行有问题。排查了半天,也没发现问题。

我是读取一个文件,然后处理并追加一段字符串,再写入。出问题的情况是多次执行的时候,执行一次就没问题,最后简化处理,就直接附在读取的内容之后,发现得到的结果只是最后一次执行的追加内容。

先是对文件进行加锁,但是还是不行。最后我把读取文件的方法换成了file_get_contents就正常了。很是疑惑。再检查代码。我在读取文件的时候使用的时fread,后面的大小是使用filesize获取的。我把filesize换成了9999在执行,就没问题了。那么就查手册。

PHP filesize() 函数

定义和用法

filesize() 函数返回指定文件的大小。

若成功,则返回文件大小的字节数。若失败,则返回 false 并生成一条 E_WARNING 级的错误。

语法

filesize(filename)
参数 描述
filename 必需。规定要检查的文件。

提示和注释

提示:本函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。

红色标注的地方,是这个问题的原因。

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注