Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykrycie nieużywanych plików
Forum PHP.pl > Forum > Serwery WWW
markonix
W starej aplikacji (zero OOP) mam setki plików pochodzących jeszcze z czasów nauki PHP stąd folder jest pełen plików PHP ze skryptami, testami, wersjami innych plików. Zastanawiam się czy jest jakiś sposób aby otrzymać listę plików nie otwartych przez ostatnie X lat. Oczywiście przez otwarcie rozumiem wszelki kontakt z plikiem w tym include/require i zewnętrzne odwołania.

Plików jest kilkaset, niektóre wydają się niepotrzebne ale gdzieś tam są np. includowane i może się coś sypnąć, co nie zauważy człowiek od razu.

Fajnie by też było aby sposób działał w przypadku plików css, js i innych bo też też w jednym folderze leżą i mi wstyd za ten bałagan.
alegorn
nic o takowym narzędziu nie wiem - gdyby było to ja chętnie bym usłyszał.
zmien nazwe/przeniesz te najbardziej podejrzane - jak nie zauważysz braku w miesiąc czy dwa, to znaczy że nie potrzebne wink.gif

j.
erix
fileatime?

Ogólnie, to puść jakiś tracing (debug_backtrace, ale proponuję xdebug) i tam masz listę dołączanych oraz wykorzystywanych plików.
redeemer
A co do css, js i obrazków to napisałem kiedyś prosty skrypt który przetwarzał access logi serwera apache i porównywał nazwy requestowanych plików z ścieżkami plików na dysku twardym. Serwis miał dużo wyświetleń (access log z jednego dnia zajmował ponad 1 GB) co ograniczyło w dużym stopniu margines błędu.
markonix
Cytat(erix @ 7.08.2012, 12:50:51 ) *
fileatime?

Ogólnie, to puść jakiś tracing (debug_backtrace, ale proponuję xdebug) i tam masz listę dołączanych oraz wykorzystywanych plików.


fileatime - myślałem, że wystarczy i faktycznie u mnie działa całkiem dobrze niestety najpóźniejsza data to dzisiejsza o 5 rano.
Nie jestem pewien ale data ta jest modyfikowana w momencie backupu.
Funkcja pomocna w obrębie jednego dnia - zawsze coś.
  1. $files = glob('*');
  2. array_multisort(array_map('filemtime', $files), SORT_DESC, $files);
  3. foreach($files as $filename) {
  4. echo $filename .' - '. date("F d Y H:i:s.", fileatime($filename)) .'<br /><br />';
  5. $i++;
  6. }
  7.  
  8. echo $i;
rzymek01
albo dla każdego pliku przeleć grepem w poszukiwaniu jego wystapień w innych plikach, jeśli nie znajdzie, to mozna wnioskować, że taki plik nie jest wykorzystywany tongue.gif
markonix
No ale takie coś nie przejdzie u mnie bo to, że ten plik jest gdzieś includowany to nie znaczy, że koniecznie wykorzystywany, może być kilka plików wzajemnie się wykorzystujących ale ich cała paczka zaśmieca mi FTP.
erix
Cytat
że ten plik jest gdzieś includowany to nie znaczy, że koniecznie wykorzystywany

No to podejrzewam, że czeka Cię napisanie takiego narzędzia od zera.

Ew. coś do unit-testów, co pozwala na analizę pokrycia kodu (code coverage; wykorzystanie poszczególnych plików/partii kodu per wykonanie skryptu).
markonix
Gdyby nie backupy to fileatime by wystarczył.

Myślałem, że jeszcze jest jakaś opcja w apachu, logi czy coś.
erix
Pomyśl logicznie - Apache, to tylko "pomost" pomiędzy użytkownikiem a interpreterem.

Jeśli napiszesz odpowiedni skrypt w bashu, który ściąga SMS z komórki podłączonej do komputera, to zostaną one odczytane. Jak Apache ma wiedzieć, czy używasz starej Nokii, czy Alcatela?

Pozostaje wyłącznie analiza tego, co robi PHP, bo to jest niezależne od użytego demona. Skorzystaj z podpowiedzi, które dostałeś w moim poprzednim poście.
alegorn
tak naprawde nadpisz sobie funkcje includudowania pliku + loger jaki plik używasz.
erix
Ale takim rozwiązaniem musisz:
  • praktycznie przepisać cały skrypt
  • możesz zapomnieć o sprawdzaniu tego, czy coś z załączanego pliku jest w ogóle wykorzystywane
markonix
Cytat(erix @ 8.08.2012, 11:42:32 ) *
Pomyśl logicznie - Apache, to tylko "pomost" pomiędzy użytkownikiem a interpreterem.

Przez Apache rozumiem generalnie oprogramowanie serwerowe, a tutaj mam coś takiego jak:
- logi apache gdzie dostanę odwołania do plików, które nie istnieją
- webanalizer gdzie mam informacje, które pliki są wywoływane najczęściej
- i pewnie inne, o których nawet nie wiem.
erix
W kontekście skryptów php te informacje są mało wartościowe...
markonix
Skoro w logach mam informacje, których plików nie ma, a są wywoływane to wystarczyła by informacja odwrotna - wartościowe.
Skoro mam informacje które pliki są wywoływane najczęściej, to wystarczyłby mi pełen log wywołań plików - wartościowe.

I nie piszemy o skryptach tylko plikach.
erix
Sry, Winnetou, ale teraz sam sobie przeczysz:

Cytat
że ten plik jest gdzieś includowany to nie znaczy, że koniecznie wykorzystywany
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.