对于,,等函数is_file(),PHP会为每个文件缓存该函数的结果,以便在再次调用该函数时提高性能。file_exists()
但是在某些情况下,您想要清除此缓存的信息,例如在同一页面中多次获取同一文件的信息之类的任务。
需要注意的是,PHP还会缓存不存在的文件的信息。因此,当您file_exists()在不存在的文件上使用时。PHP将返回FALSE,直到您创建该文件为止。
创建此文件后,PHP将返回TRUE。但是,当您手动删除此文件并调用时file_exists(),该文件将返回TRUE。因为PHP将返回缓存的信息。
因此,请始终使用unlink()因为unlink()会自动删除该文件的缓存。
为了清除文件状态缓存,使用了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()。
这是摘自PHP手册的示例:
$file = "sample.txt"; function get_owner($file) { $stat = stat($file); $user = posix_getpwuid($stat["uid"]); return $user["name"]; } $format = "UID @ %s: %s\n"; printf($format, date("r"), get_owner($file)); chown($file, "ross"); printf($format, date("r"), get_owner($file)); clearstatcache(); printf($format, date("r"), get_owner($file));
#OUTPUT
UID @ Sun,2009年10月12日21:48:28 +0100:根
UID @ Sun,2009年10月12日21:48:28 +0100:根
UID @ Sun,2009年10月12日21:48:28 +0100:罗斯