06
2018
11

PHP clearstatcache() 函数

定义和用法

clearstatcache() 函数清除文件状态缓存。

clearstatcache() 函数会缓存某些函数的返回信息,以便提供更高的性能。但是有时候,比如在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被删除或修改的危险时,你需要清除文件状态缓存,以便获得正确的结果。要做到这一点,就需要使用 clearstatcache() 函数,清除被 PHP 缓存的该文件信息。

会进行缓存的函数,即受 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()

语法

clearstatcache()

例子

<?php
//检查文件大小
echo filesize("test.txt");
$file = fopen("test.txt", "a+");
// 截取文件
ftruncate($file,100);
fclose($file);
//清除缓存并再次检查文件大小
clearstatcache();
echo filesize("test.txt");
?>

输出结果:

792

100

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

<?php
$file = 'output_log.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));
?>

输出:

UID @ Sun, 12 Oct 2008 20:48:28 +0100: root

UID @ Sun, 12 Oct 2008 20:48:28 +0100: root

UID @ Sun, 12 Oct 2008 20:48:28 +0100: ross

原文链接:https://www.qiquanji.com/post/8564.html

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

gzh

微信扫码关注

更新实时通知

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。