PHP | clearstatcache 函數
怎樣清除文件操作緩存信息
最近更新時間 2020-12-30 16:27:07
clearstatcache 清除文件狀態緩存。
使用 stat()、lstat() 等函數時,PHP 將緩存這些函數的返回信息以提供更快的性能。在某些情況下,你可能想清除被緩存的信息。例如,如果在一個腳本中多次檢查同一個文件,而該文件在此腳本執行期間有被刪除或修改的危險時,你需要清除文件狀態緩存。這種情況下,可以用 clearstatcache() 函數來清除被 PHP 緩存的該文件信息。
對於不存在的文件,PHP 並不會緩存其信息。所以如果調用 file_exists() 來檢查不存在的文件,在該文件沒有被創建之前,它都會返回 false。如果該文件被創建了,就算以後被刪除,它都會返回 true 函數 unlink() 會自動清除該緩存。
函數定義
clearstatcache([ bool $clear_realpath_cache = false [, string $filename ]]):void
// 源文件位於:ext/standard/filestat.c
# 函數定義
PHP_FUNCTION(clearstatcache)
{
...
php_clear_stat_cache(clear_realpath_cache, filename, filename_len);
}
...
if (clear_realpath_cache) {
if (filename != NULL) {
realpath_cache_del(filename, filename_len);
} else {
realpath_cache_clean();
}
}
參數
- checkclear_realpath_cache - 是否清除真實路徑緩存。
- checkfilename - 清除文件名指定的文件的真實路徑緩存; 只在 clear_realpath_cache 為 true 時啟用。
返回值
- checkvoid - 無返回值。
示例1: - 使用 clearstatcache() 函數清除文件狀態緩存。
<?php
/**
* PHP 使用 clearstatcache() 函數清除文件狀態緩存。
*
* @since Version 1.0.0
* @filesource
*/
// 文件路徑
$path = "./foo.txt";
// 顯示文件大小
echo 'Size1::'.filesize($path).PHP_EOL;
// 讀取文件
$file = fopen($path, "a+");
// 截取文件
ftruncate($file, 5);
fclose($file);
// 顯示文件大小
echo 'Size2::'.filesize($path).PHP_EOL;
// 清除文件緩存
clearstatcache();
// 顯示文件大小
echo 'Size3::'.filesize($path).PHP_EOL;
Size1::66 Size2::66 Size3::5