![]() |
![]() |
![]() ![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ten post edytował SoofMan 24.07.2007, 10:37:19 |
|
|
![]() |
![]()
Post
#2
|
|
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%) ![]() ![]() |
Wygląda że nie ma takiego katalogu.
Usuń linijkę
Z pliku klasy compactera. Zostawiłem tam mały bałagan przy debuggowaniu. Nie powinno go tam być. W ogóle z pliku .class.php wywal wszystko co nie należy do definicji klasy - chyba wygląda to tak:
Wszystko co jest przed linijką class PHPCompacter { możesz wywalić A co to wszystko ma ci dać? Tylko kod straci na czytelności i tyle z tego pożytku... 1. No przecież o to chodzi żeby stracił na czytelności.... po to chyba są SCRAMBLERy, nie ? "Zaciemnisz" swój kod i potem niezbyt zaawansowanym programistom będzie ciężko się w niego wczytać - taka forma ochrony swojego patentu czy coś (chociaż wcale nie o to mi chodziło gdy tworzyłem Compactera)... 2. Wygoda - używam tego do zmniejszania kodu PHP Hypercachera tak żeby zmieścił się w dwóch linijkach. To bardzo wygodne, gdyż taki kod łatwo się wkleja do innych skryptów, a istotą instalacji PHP Hypercachera jest właśnie wklejanie małych wstawek do innych skryptów. 3. Jak kolega wyżej napisał - szybciej się uploaduje na FTP. Kod zmniejszony za pomocą Compactera jest o około 50% mniiejszy od nieskopmpaktowanego kodu, a zachowuje tę samą funkcjnonalność i działa dokładnie identycznie (tzn. jak go udoskonalę to może będzie kiedyś działał dobrze w każdym przypadku (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ) Ten post edytował SoofMan 21.07.2007, 01:08:52 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 28.09.2025 - 05:00 |