ďťż

[PHP] Czas ostatniej modyfikacji pliku dany katalog; nieznana nazwa pliku

       

Podstrony


telcocafe

Utworzyłem kompilator szablonów HTML -> PHP. Pozostaje jeszcze kwestia sprawdzania czasu modyfikacji pliku. Przyjmijmy, że wykorzystujemy kilka szablonów, aby wygenerować stronę (w tym np. layout, artykuł, komentarze). Nie chciałbym wykonywać tej operacji kilkakrotnie - tzn. przy każdym include().

Przykład 1. Czas dostępu do folderu ze źródłem + czas modyfikacji kodu skompilowanego do PHP.if( fileatime('./source/dir') > filemtime('./cache/dir')) { /*zbadaj czas pozostałych i kompiluj */ }Tutaj pojawia się problem, gdyż nie można zawsze ufać funkcji fileatime z argumentem ścieżki do katalogu. Natomiast touch('katalog'); w Windows XP powoduje błąd "Permissions denied" (brak uprawnień). Drugi problem da się rozwiązać, stosując dodatkowy plik. Pozostał pierwszy - na niektórych serwerach uaktualnianie czasu dostępu do katalogu może być wyłączone.

Przykład 2.if( filemtime('./pierwszy/plik.html') > filemtime('./pierwszy/plik.php')) { /* skanuj katalog, zbadaj czas wszystkich plików i kompiluj w razie potrzeby */ }Założenie: Jeśli w szablonie pojawi się include($x), nie sprawdzamy czasu modyfikacji $x. Problem: jeśli załadujemy nowszą wersję $x na serwer, ujrzymy starą, dopóki nie wydamy komendy ponownej kompilacji plików lub nie zmodyfikujemy I pliku.

Może macie inny pomysł, jak sprawdzić czas modyfikacji co najmniej 1 pliku skórki bez wykonywania wielu operacji I/O?

PS. Zakładamy, że użytkownik modyfikuje szablony przy pomocy edytora WWW i ładuje je na serwer przez FTP.
Użytkownik Ferrari edytował ten post 23 luty 2008, 09:14


Może lepiej trzymaj sobie gdzieś sumę kontrolną szablonu, a potem je kompiluj jeśli się zmieniła. O wiele "pewniejsze" rozwiązanie...

Co do założenia: Jak w szablonie dajesz include() to znaczy że coś jest nie tak i trzeba jeszcze raz przemyśleć cały program...

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.