![]() |
![]() |
![]() ![]()
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 -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
W środowisku produkcyjnym warto, aby w kodzie nie było niepotrzebnych opdstępów... Ja zawsze przelatuję przez katalog php_strip_whitespace" title="Zobacz w manualu PHP" target="_manual i widać niewielką (ale jednak widać) różnicę... Po co marnować czas na czytelność kodu, który nie będzie przez nikogo czytany...
PS. Nie wiem czy wychodzenie poza wymienioną funkcję daje zbyt wielkią różnicę... -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 16:06 |