Autor Zpráva
Public
Profil
Dá sa nejakým spôsobom zistiť, aký je dátum poslednej zmeny serveru ?
Napr.
Zmením súbor: site/inc/index.php v dátume 17.11.2011 o 21:24.

Tak posledná zmena by bol dátum súboru index.php
--

Samozrejme myslím to tak, že zobrazí sa akýkolvek PHP dátum súboru, ktorý bol zmenený v nejakom dátume.
etexweb
Profil
<?php

function getAllFiles($directory, $recursive = true) {
     $result = array();
     $handle =  opendir($directory);
     while ($datei = readdir($handle))
     {
          if (($datei != '.') && ($datei != '..'))
          {
               $file = $directory.$datei;
               if (is_dir($file)) {
                    if ($recursive) {
                         $result = array_merge($result, getAllFiles($file.'/'));
                    }
               } else {
                    $result[] = $file;
               }
          }
     }
     closedir($handle);
     return $result;
}

function getHighestFileTimestamp($directory, $recursive = true) {
     $allFiles = getAllFiles($directory, $recursive);
     $highestKnown = 0;
     foreach ($allFiles as $val) {
          $currentValue = filemtime($val);
          if ($currentValue > $highestKnown) $highestKnown = $currentValue;
     }
     return $highestKnown;
}

// Use example

echo 'The newest file has the time stamp:<br>';
echo date('Y-m-d H:i:s', getHighestFileTimestamp('../'));

?>
Majkl578
Profil
[#2] etexweb:
Probůh proč takovou obludnost? A ještě rekurzí a skladováním všech souborů?

Nezdá se ti toto jako snazší řešení?
$where = '/usr/local/netbeans';

$latest =  NULL;

foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($where, \FilesystemIterator::CURRENT_AS_FILEINFO | \ FilesystemIterator::SKIP_DOTS)) as $file) {
    if ($latest === NULL || $latest->getMTime() < $file->getMTime()) $latest = $file;
}

var_dump($latest->getPathname()); // název posledního souboru, $latest je instancí SplFileInfo
Alphard
Profil
Tak celkově nejjednodušší bude asi Datum poslední aktualizace includovaných souborů.
Tak rekurzivně to zřejmě nefunguje.
Majkl578
Profil
[#4] Alphard:
To si nemyslím, na unixu se datum změny nepromítá do rodiče rekurzivně.
Adrifinel
Profil
Nedávno jsme dělali na to kód:

<? $filename = $_SERVER["SCRIPT_FILENAME"];
$zakazane = array("/index.php"; // tahle část se týký, pokud bys to nechtěl na některé stránce ukazovat.

foreach($zakazane as $co){
 if(strpos($filename, $co)) {
  $povoleno = "ne";
 }
}
if (file_exists($filename) AND $povoleno == "ano") {
    echo "Poslední změna provedena " . date ("d.m.Y H:i:s", filemtime($filename));
}
/* else {echo $filename." neexistuje.";} */ ?>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0