1

私は個人的に限られたPHPを知っていますが、別の人から提供されたスクリプトを持っていて、それを少し調整しました

<?php

function getFiles($dir)
{
    $arr=scandir($dir);
    $res=array();
    foreach ($arr as $item)
    {
        if ($item=='..' || $item=='.'){continue;}
        $path=$dir.'/'.$item;
        if (is_dir($path))
        {
            $res=array_merge($res,getFiles($path));
        }
        else
        {
            $res[$path]=fileatime($path);
        }
    }
    return $res;
}

 $files=getFiles(dirname('Manuals'));
 arsort($files);
 $files=array_slice(array_keys($files),0,11);
 foreach ($files as $file)
 {
 $URL=$file;
 $file = trim(substr($file, strrpos($file, '/') + 1));
 $file = str_replace(".pdf", "", $file);
     echo '<!--<li style="margin-left: -25px; white-space: pre;">--><a href="'.$URL.'" title="'.$file.'">'.$file.'</a><br />';
 }

?>

"$res[$path]=fileatime($path);" で前の filemtime を fileatime に変更します。

私が収集したものから、これはファイルが最後にアクセスされた時間を示すはずですが、filemtime または filectime と同じように機能するようです。サーバーがアクセスした時刻を更新していない可能性がありますか? (ファイルはすべてhtml、php、pdfです)

これが許可の問題かどうかはわかりませんか?サーバーの事?コードのこと?

4

1 に答える 1

2

次の2つの効果のいずれかが表示される場合があります。

  • 多くのWebサーバーでは、Webデータを伝送するファイルシステムがマウントさnoatimeれ、要求ごとに更新するという高価なIOを節約します。

  • PHPのfstatキャッシュは、それ自体に寿命がある傾向がありますclearstatcache()。これを克服するために使用します。

于 2012-06-13T17:07:03.490 に答える