Autor Zpráva
Hisak
Profil *
Zdravím,
mám index.php a do něj includuji ostatní sekce. Chtěl bych v index.php vypsat datum poslední aktualizace webových stránek jako celku - tzn. když aktualizuji nějakou sekci (např. historie.php nebo oznameni.php) tak se do patičky indexu vypíše datum. Řešilo se to zde na diskuzi: Zjištění poslední aktualizace v php, ale nedospěli k řešení.

Mě napadlo řešit to pomocí regulárních výrazů:
$filename = '~^.+$~'.'.php';
echo "Poslední aktualizace: ".date("d.m.Y H:i:s", filemtime($filename));

ale píše mi to:
Warning: filemtime(): Stat failed for ~^.+$~.php (errno=2 - No such file or directory) in /www/index.php on line 147 Poslední aktualizace: 01.01.1970 01:00:00

Asi jsem zapomněl na nějakou funkci pro kontrolu regulárů, nevím.
Prosím poraďte, jak by to šlo udělat. Zkoušel jsem to i pomocí polí ale taky neúspěšně.
Předem děkuji za rady.
Davex
Profil
V parametru funkce filemtime() má být jméno souboru a regulární výraz tam být nemůže. Takto se dá zjistit poslední aktualizace pouze jednoho souboru.

V odkázaném tématu měl Jan Tojnar špatnou cestu k souboru, a proto to nemohlo fungovat.


Nalézt datum nejnovějšího vloženého souboru se dá třeba takto:

$cas = 0;
$vlozene = get_included_files();

foreach ($vlozene as $soubor) {
  $cas = max($cas, filemtime($soubor));
}

echo "Poslední aktualizace: ".date("d.m.Y H:i:s", $cas);
Hisak
Profil *
Davex:
Děkuji. Nedělá to sice to co jsem myslel, ale velmi mi to pomohlo. Trochu jsem Váš kód upravil a pracuje skvěle.

$slozka = dir(".");
while($soubor=$slozka->read()) {
    $vlozene[] = $soubor;
}
$slozka->close();

$cas = 0;
foreach ($vlozene as $file) {
    $cas = max($cas, filemtime($file));
}

echo "Poslední aktualizace: ".date("d.m.Y H:i:s", $cas);


Nyní to vypíše datum nejaktuálnějšího souboru v adresáři.
Davex
Profil
Pokud chceš znát poslední aktualizaci bez procházení všech souborů, tak se dá také využít datum poslední změny adresáře. Objeví se tam datum jakékoliv změny souborů v adresáři včetně smazání souborů a vytvoření podadresáře.

echo "Poslední aktualizace: ".date("d.m.Y H:i:s", filemtime('.'));

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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