首页 > 解决方案 > PHP:可以附加到文件但不能正确回显文件内容

问题描述

我正在尝试创建一个本地 txt 文件,在其中写入一些文本,关闭它,读取并返回其内容,然后附加一些文本,最后,再次读取并回显内容。

<?php
    $file = "test.txt";

    $fileHandler = fopen($file, "w") or die("Could not write to file!");
    fwrite($fileHandler, "This is my first message <br>");
    fwrite($fileHandler, "This is my second message <br>");
    fclose($fileHandler);


    $fileHandler = fopen($file, "r") or die("Could not read file!");;
    $contents = fread($fileHandler, filesize($file));
    fclose($fileHandler);

    echo $contents;
    echo "<br>";
    echo "FileSize after first write: " . filesize($file);
    echo "<br>";
    echo "<hr>";

    $fileHandler = fopen($file, "a") or die("Could not append to file!");
    fwrite($fileHandler, "This is my third message <br>");
    fclose($fileHandler);

    $fileHandler = fopen($file, "r") or die("Could not read file!");;
    $contents = fread($fileHandler, filesize($file));
    fclose($fileHandler);

    echo $contents;
    echo "<br>";
    echo "FileSize after append: " . filesize($file);
    echo "<br>";

一切正常,所有消息都写入文件,但问题出在回声上。我期待看到这样的东西:

This is my test message
This is my second test message

FileSize after first write: 63
-----------------------------------------------------------------
This is my test message
This is my second test message
This is my third test message

FileSize after append: 97

但我得到以下回声:

This is my test message
This is my second test message

FileSize after first write: 63
--------------------------------------------------------------------
This is my test message
This is my second test message

FileSize after append: 63

我无法弄清楚这里有什么问题......任何帮助将不胜感激!!!!

标签: php

解决方案


在文档页面中filesize()

注意:此函数的结果被缓存。有关详细信息,请参阅 clearstatcache()。

所以你必须在写入新内容后清除缓存:

 $fileHandler = fopen($file, "a") or die("Could not append to file!");
 fwrite($fileHandler, "This is my third message <br>");
 fclose($fileHandler);
 clearstatcache();

推荐阅读