>  Q&A  >  본문

php - filesize返回的文件大小不对?

我的需要是写一段脚本,制造出来一个700kb的文件,代码如下:

<?php
    $handle = fopen('./split.log', 'a+');
    $result = 0;
    while( $result <= 700*1024) {
        for($number = 0; $number <= 10; $number++) {
            fwrite($handle, "{$number}\t");
        }   
        fwrite($handle, "\n");
        $result = filesize('./split.log');
        echo $result,"\n";
        sleep(2);
    }   
    fclose($handle);
?>

问题是,发现产生了死循环,while条件使用为真!运行结果如下:

根本原因的是while循环中的filesize 函数返回的始终是24?不明白是什么原因?
PHP中文网PHP中文网2773일 전959

모든 응답(2)나는 대답할 것이다

  • PHPz

    PHPz2017-04-10 16:10:37

    PHP 文档说:

    Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

    PS: 这行为比 Erlang 更神奇呢……

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-10 16:10:37

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

    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()。

    회신하다
    0
  • 취소회신하다