Forum Forum PHP Hypercachera Strona Główna Forum PHP Hypercachera
Dyskusje z dopalaczem ;)
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

PHP Compacter

 
Napisz nowy temat   Odpowiedz do tematu    Forum Forum PHP Hypercachera Strona Główna -> Inne skrypty
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
SoofMan
Warp 13 ;)


Dołączył: 12 Kwi 2007
Posty: 96

PostWysłany: Czw Lip 19, 2007 2:21 pm    Temat postu: PHP Compacter Odpowiedz z cytatem

Witam

Przedstawiam długo 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 skomplikowane i przekombinowane skrypty (jak PHP Hypercacher Wink )

- 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:

Kod:

class PHPCompacter {

   //If you have any variable name that you don't want to be changed by PHPCompacter, put its name in this array
   //Warning: All of these must be written UPPERCASE and without dollar '$' otherwise it won't work correctly !!
   var $predefined_exclude_vars = array('THIS', '_SERVER', 'HTTP_SERVER_VARS', '_ENV', 'HTTP_ENV_VARS', '_COOKIE', 'HTTP_COOKIE_VARS', '_GET', 'HTTP_GET_VARS', '_POST', 'HTTP_POST_VARS', '_FILES', 'HTTP_POST_FILES', '_REQUEST', '_SESSION', 'HTTP_SESSION_VARS', 'GLOBALS', 'PHP_ERRORMSG');
   var $predefined_exclude_funcs = array();
   //This are the character that will be used to create new, short variables
   var $counter_string_chars = array('qwertyuiopasdfghjklzxcvbnm', '1234567890_');
   var $diffrence_separator = '^&pC*'; //This helps to identify/find variable and function names later by separating alphanumeric characters from non-alphanumeric characters
   var $varname_maxlen; //Array containing maximum sizes of string "digits" of counter string
   var $min_counter_string_length; //Minimum length of variable names
   var $max_counter_string_length; //Maximum length of variable names
   var $compact_variables; //BOOLEAN - true means that we want to compact variable names
   var $varname_counter = 0;
   var $output_folder = '_phpCompacter_Output';



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:
Kod:

$phpc1 = new PHPCompacter(1, 5, 2);
$phpc1->loadReservedKeywords('predefined_keywords.txt');
$phpc1->RecursiveCompactDir('Nazwa_folderu_z_plikami_PHP');


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

Jak będą jeszcze jakieś pytania to chętnie odpowiem
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Forum PHP Hypercachera Strona Główna -> Inne skrypty Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


Powered by phpBB © 2001, 2005 phpBB Group