学到一个函数clearstatcache()

用PHP在做图片缩略的时候,原图被我缩略后以相同的路径,相同的文件名存放缩略图。在缩略前,我读取了原图的文件大小,缩略后我用filesize()函数获取缩略后的文件大小总是不对,读出来总是缩略前原图的大小,当时猜想可能被系统缓存了,后来Google之才知道,PHP文件操作的时候,如果在一个脚本中会对同路径的同名文件进行操作,PHP会缓存文件的相关信息,以提升速度。在对同一个文件做更改,删除等操作后如果需要获取此文件信息,就必须调用clearstatcache()来清除系统文件信息缓存。摘抄一下PHP函数文档:

说明
void clearstatcache ( void )
当使用 stat(),lstat() 或者任何列在受影响函数表(见下面)中的函数时,PHP 将缓存这些函数的返回信息以提供更快的性能。然而在某些情况下,你可能想清除被缓存的信息。例如如果在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被删除或修改的危险时,你需要清除文件状态缓存。这种情况下,可以用 clearstatcache() 函数来清除被 PHP 缓存的该文件信息。

必须注意的是,对于不存在的文件,PHP 并不会缓存其信息。所以如果调用 file_exists() 来检查不存在的文件,在该文件没有被创建之前,它都会返回 FALSE。如果该文件被创建了,就算以后被删除,它都会返回 TRUE

Note: 本函数缓存特定文件名的信息,因此只在对同一个文件名进行多次操作并且需要该文件信息不被缓存时才需要调用 clearstatcache()。

受影响的函数包括 stat(),lstat(),file_exists(),is_writable(),is_readable(),is_executable(),is_file(),is_dir(),

is_link(),filectime(),fileatime(),filemtime(),fileinode(),filegroup(),fileowner(),filesize(),

filetype() 和 fileperms()。

发表回复

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据