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.{
/* skanuj katalog, zbadaj czas wszystkich plików i kompiluj w razie potrzeby */
}
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.{
/* skanuj katalog, zbadaj czas pozostałych szablonów i kompiluj w razie potrzeby */
}
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.