php - filesize返回的文件大小不对?
PHP中文网
PHP中文网 2017-04-10 16:08:37
0
2
960

我的需要是写一段脚本,制造出来一个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中文网

认证高级PHP讲师

全員に返信(2)
PHPzhong

PHP 文档说:

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

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

いいねを押す +0
洪涛

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
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!