![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 15.04.2007 Skąd: klikash ? A stond, z tamtond, ze wszond Ostrzeżenie: (0%) ![]() ![]() |
Witam
Przedstawiam dawno temu zapowiadany na forum.php.pl skrypcik: PHP Compacter, którego używam do zmniejszania rozmiarów skryptów PHP Hypercacher. Od razu powiem, że jest to wersja NIESTABILNA-ALPHA i ma wiele wad - część z nich a także zalety wymienię ponizej: Wady: - Powolny jak cholera (przerobienie katalogu PHP Fusion (1MB czy 2MB kodu) zajmuje z 10 minut na procesorcze klasy Sempron 4000+) - CMSy PHP Fusion i Joomla po przerobieniu nie działają poprawnie, aczkolwiek kod PHP nie wywołuje parse errorów, a w PHP Fusion działają niektóre funkcjonalności (patrz zrzut ekranu z PHP Fusion) - Algorytm nie wykorzystuje w większym stopniu preg_match, gdyż miałem z tym duże problemy (preg_match nie toleruje niektórych znaków)- zamiast tego algorytm "taguje" więc początek i koniec fraz alfanumerycznych odpowiednim unikalnym ciągiem i potem używa str_replace do wyszukania fraz razem z unikalnymi ciągami. Poza tym z użyciem preg_match program jest jeszcze wolniejszy. - Pisanie czegoś takiego w języku nie kompilowanym do postaci BINARNEJ ma mały sens, ponieważ jest strasznie powolny - Ogólnie uważam że program jest mało przydatny w obecnej formie i nie wiem czy komuś się na coś przyda Zalety: - Przerabia bezbłędnie mniej przekombinowane skrypty (obsługuje poprawnie dużą część konstrukcji PHP - tylko z niektórymi ma problem: potrzeba więcej debuggowania żeby dojść co nie działa) - Zmniejsza rozmiar kodu PHP o około 50% bez użycia kompresji - Implementacja zawiera prymitywny parser PHP więc teoretycznie może się komuś przyda do czegoś - PHPCompactera można użyć jako SCRAMBLERA (zaciemniacza) kodu - żeby zabezpieczyć nasz kod przed kradzieżą rozwiązań przez mniej doświadczonych programistów Konstrukcja: Klasa zawiera prymitywny algorytm parsujący kod PHP, który analizuje kod PHP bajt po bajcie i potrafi odróżnić nazwy zmiennych, znaki specjalne, komentarze, itd. Licencja: GPL wersja 3. Początek kodu wygląda tak:
Klasy używamy w następujący sposób 1. Wrzucamy pliki php_compacter.class.php oraz predefined_keywords.txt do folderu 2. Wrzucamy pliki PHP których rozmiar chcemy zmniejszyć do jakiegoś katalogu obok (może to być folder w którym jest zainstalowane PHP fusion) 3. W php_compacter.class.php (lub oczywiście wpisujemy to w innym pliku, i includujemy klasę) wpisujemy:
4. Odpalamy skrypt z przeglądarki i czekamy na efekt. Jeżeli mamy odpowiednie uprawnienia, to PHP Compacter automatycznie utworzy katalog _phpCompacter_Output i w nim skopiuje strukturę folderów z katalogu, który przerabia i pozapisuje w tej strukturze przerobione pliki PHP w odpowiednich miejscach. Jeżeli nie mamy uprawnień do zapisywania w aktualnym folderze, należy zmienić w klasie zmienną $output_folder na jakiś inny folder - np. mój_folder1/folder/_phpCompacter_Output Pobrać skrypt można tutaj: http://hypercacher.com/download_pl.html Specjalnie do dyskusji na temat tego skryptu utworzyłem też temat na moim forum - jeżeli będą jakieś sugestie poprawek to chętnie je wdrożę. http://hypercacher.com/forum/viewtopic.php?t=32 ----------- Może komuś będzie chciało się to przepisać na coś binarnego - np. C++ - bo na moje potrzeby wystarczy taka funkcjonalność jak jest teraz, poza tym piszę aktualnie tylko w PHP ![]() Ten post edytował SoofMan 24.07.2007, 10:37:19 -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 09:59 |