ďťż
Podstrony
|
telcocafeUtworzył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... |
|||
Sitedesign by AltusUmbrae. |