PHP filesize()显示旧文件大小以及windows共享(网络)文件夹中的文件

PHP filesize()显示旧文件大小以及windows共享(网络)文件夹中的文件,php,apache,file-get-contents,filesize,Php,Apache,File Get Contents,Filesize,我使用以下脚本从文件中读取新内容: <?php clearstatcache(); $fileURL = "\\\\saturn\extern\seq_ws.csv"; $fileAvailable = file_exists($fileURL); $bytesRead = file_get_contents("bytes.txt"); if($fileAvailable){ $fileSize = filesize($fileURL); //Statusses 1 =

我使用以下脚本从文件中读取新内容:

<?php
clearstatcache();
$fileURL = "\\\\saturn\extern\seq_ws.csv";
$fileAvailable = file_exists($fileURL);
$bytesRead = file_get_contents("bytes.txt");

if($fileAvailable){
    $fileSize = filesize($fileURL);
    //Statusses 1 = Partial read, 2 = Complete read, 0 = No read, -1 File not found. followed by !!
    if($bytesRead < $fileSize){
        //$bytesRead till $fileSize bytes read from file.
        $content = file_get_contents($fileURL, NULL, NULL, $bytesRead);
        file_put_contents("bytes.txt", ((int)$bytesRead + strlen($content)));
        echo "1!!$content";
    }else if($bytesRead > $fileSize){
        //File edit or delete detected, whole file read again.
        $content = file_get_contents($fileURL);
        file_put_contents("bytes.txt", strlen($content));
        echo "2!!$content";
    }else if($bytesRead == $fileSize){
        //No new data found, no action taken.
        echo "0!!";
    }
}else{
    //File delete detected, reading whole file when available
    echo "-1!!";
    file_put_contents("bytes.txt", "0");
}
?>

当我运行它并做预期的事情时,它工作得非常完美。 当我从同一台PC和我的服务器编辑文件时,它会立即工作并返回正确的值。 但是,当我从另一台电脑编辑文件时,我的脚本大约需要4-6秒来读取文件的正确大小

我添加了
clearstatcache()在我的脚本之上,因为我认为这是一个缓存问题。但奇怪的是,当我从服务器PC更改文件时,它会立即响应,但从另一台PC更改文件时,它不会响应

最重要的是,当另一台电脑更改文件时,我会在Windows中看到文件更改,并显示
文件大小和内容,但出于某种原因,Apache大约需要4-6秒才能检测到更改。在这4-6秒钟内,它接收到更改前的旧
文件大小

因此,我有以下问题:

  • 文件大小是否缓存在Apache服务器或Windows中的任何位置
  • 如果问题1适用,是否仍有删除或禁用此缓存的方法
  • 这可能不是缓存问题吗

  • 我认为在你的本地PC中php有开发设置

    因此,我建议检查php.ini的:
    realpath\u cache\u ttl

    即:

    realpath_cache_ttl integer
    
    缓存realpath的持续时间(秒) 给定文件或目录的信息。 对于文件很少更改的系统, 考虑增加价值。 要进行测试,请在本地和服务器上输入php信息以检查该值:


    阅读注释部分:
    注意:此函数的结果将被缓存。有关详细信息,请参阅clearstatcache()。
    我认为在您的本地开发环境中,php.ini的
    realpath\u cache\u ttl
    param.@num8er我已经在使用
    clearstatcache()
    ,正如您在我的脚本中看到的那样。问题比这更复杂,因为它涉及UNC位置。另外,
    clearstatcache()
    主要(如果不总是)用于调用脚本中的同一文件。我的问题在于脚本的每次调用。但是谢谢你的建议。