clearstatcache

(PHP 4, PHP 5, PHP 7, PHP 8)

clearstatcacheファイルのステータスのキャッシュをクリアする

説明

clearstatcache(bool $clear_realpath_cache = false, string $filename = ""): void

statlstat、 またはその他の関数(後述)を使用すると、PHPはパフォーマンス向上のために それらの関数の戻り値をキャッシュします。しかし、ケースによっては、 キャッシュされた情報を消去したい場合もあるでしょう。 例えば、一つのスクリプト上で同じファイルが何度もチェックされ、 そのファイルが変更されたり削除されたりする可能性がある場合、 ステータスキャッシュを消去しなければならないと感じるでしょう。 このようなケースでは、clearstatcache()を使用することで ファイルの情報に関してPHPが持っているキャッシュをクリアすることができます。

PHP は存在しないファイルについての情報はキャッシュしないことにも 注意してください。もし存在しないファイルに対して file_exists() をコールする場合、ファイルを作成するまで この関数は false を返します。もしファイルを作成した場合、 たとえファイルを削除したとしても true を返します。 しかし、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().

パラメータ

clear_realpath_cache

realpath キャッシュクリアするかどうか。

filename

realpath キャッシュを特定のファイル名だけに対してクリアする。 clear_realpath_cachetrue の場合にのみ使用。

戻り値

値を返しません。

例1 clearstatcache() の例

<?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