2012-06-13 55 views
1

我個人知道的有限PHP,但是我有由他人提供的腳本,我已經調整了位PHP fileatime沒有更新

<?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 />'; 
} 

?> 

改變了以前filemtime在「$水庫[$ PATH =到fileatime fileatime($ PATH);」

從我收集,這應該顯示文件被訪問的最後時間,但是它似乎功能不超過filemtime或filectime不同。也許服務器沒有更新訪問時間? (所有文件都是HTML,PHP和PDF)

,如果這是一個權限的事情什麼想法?服務器東西?代碼的東西?

+0

您應該檢查文件所在的文件系統是否未禁用禁用時間支持(/ etc/fstab,noatime選項),通常用於提高服務器性能。 – fvu

回答

2

您可能會看到兩個效果:

  • 在許多Web服務器,承載網絡數據的文件系統掛載noatime保存的atime更新爲每個請求的昂貴IO。

  • PHP的FSTAT緩存往往對自己的生活:使用clearstatcache()來克服這一點。

+0

任何想法如何檢查數據是否安裝呀?我使用parallels Plesk Linux發行版,當前版本。 – NRGdallas

+1

運行'mount',找你,然後尋找「noatime的」在安裝選項(括號內的表達,在線路末端)的文件系統 –