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 za każdym razem wykonywać tej operacji kilkakrotnie - tzn. przy każdym include().

Przykład 1. Czas dostępu do folderu ze źródłem + czas modyfikacji katalogu z kodem PHP.
Kod
if( fileatime('./source/dir') > filemtime('./cache/dir'))
{
  /* skanuj katalog, zbadaj czas wszystkich plików i kompiluj w razie potrzeby */
}
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.
Kod
if( filemtime('./pierwszy/plik.html') > filemtime('./pierwszy/plik.php'))
{
  /* skanuj katalog, zbadaj czas pozostałych szablonó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.