Zend API |
Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.
Zend API |
5.06.2007, 16:06:49
Post
#1
|
|
Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn |
|
|
|
14.06.2007, 12:14:35
Post
#2
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 28.10.2004 Ostrzeżenie: (0%) |
Serializacja zachowa tylko zmienne i stale objektu.
Nie zachowa Metod wiec to jest bez sensu tutaj. Moze lepszym rozwiazaniem bylo by napisanie extension pozwalajacego na uzywanie PreCompiled kodu tak jak w C++ sa OBJ. To bylo by bardzo dobre rozwiazanie tworzac takie PPO (php precompiled object ... tak to bede dalej nazywal) Wiazalo by sie to ze spora modyfikacja kodu samego PHP ale wydajnosc by podskoczyla kolosalnie. Sam brak parsowania PHP przy uruchamianiu skryptu to duzo. W sumie wystarczylo by zlapac i zapisac do pliku to co wypluje kompilator po zparsowaniu i kompilacji pliku PHP i pozniej ten parser omijac w przypadku uruchamiania PPO. To bylby taki cache tylko duzo bardziej wydajny. Mozna by nawet wyciagnac sam parser z PHP aby tworzyl PPO z PHP. Mozna by nawet te PPO trzymac w pamieci. PHP po zparsowaniu i kompilacji calego kodu linkuje go na swoj sposob i uruchamia a my omineli bysmy parser i kompilator. Ten post edytował sobieh 14.06.2007, 12:47:42 |
|
|
15.06.2007, 21:35:51
Post
#3
|
|
Grupa: Zarejestrowani Postów: 219 Pomógł: 5 Dołączył: 18.07.2006 Skąd: Piekary Śląskie Ostrzeżenie: (0%) |
W sumie wystarczylo by zlapac i zapisac do pliku to co wypluje kompilator po zparsowaniu i kompilacji pliku PHP i pozniej ten parser omijac w przypadku uruchamiania PPO. Też o czymś takim myślałem, to by było najlepsze. Trzeba by się pobawić w coś polegającego na wyczajeniu jak PHP z kodu PHP robi wykonywalne binarki. Przyznam się, że troche odstrasza mnie to, że PHP jest napisane w C. Wolałbym C++. Cytat Poza tym w manualu jest coś takiego: PHP bytecode compiler. Nie chodziło wam o to? a na górze czerwony pogrubiony napis "This extension is EXPERIMENTAL." Cytat Twoj problem mozna troche inaczej zrealizowac. 1 uruchomienie zbieranie klass do jakiegos wspolnego pliku gdzie includy nie beda do kazdej akcji i plikow uruchamiane. Nie chodzi o wyeliminowanie includów tylko procesu interpretacji kodu. EDIT: Ta funkcja: http://pl.php.net/manual/en/function.bcomp...-write-file.php wygląda całkiem obiecująco, a zwłaszcza przykład. Może w najbliższym czasie zrobię jakieś testy czy to działa. EDIT: Pierwsze wyniki. Nie może być za łatwo. Funkcja bcompiler_write_file zwraca fatal error, jeżeli plik, który chcemy skompilować zawiera definicje funkcji/klas już wczytanych przez normalne wykonanie skryptu. Nie wiem czemu ale widocznie bcompiler_write_file chce normalnie "zaincludować" konwertowany plik. EDIT: Lipa niestety. Plik skompilowany i oryginalny nie wykonują się tak samo. Mam klasę SQL_sql. Ona zawiera pole protected i metode public, która z niego korzysta. Mam klasę SQL_mysqli, która dziedziczy po SQL_sql. Wywołuję jej metodę odziedziczoną po klasie rodzicu i otrzymuję: Fatal error: Cannot access protected property SQL_mysqli::$tabele_query in F:\strony\php-art\klasy\sql\silniki\sql.php on line 170 EDIT: Dziś rano zacząłem testować rozszerzenie APC. Rozszerzenie to w pamięci RAM cachuje bytecode skompilowanego skryptu. Zapowiada się dość obiecująco. Skrypt przyspieszył około trzech razy. EDIT: Niestety pierwsze badania APC były chyba dziełem przypadku po dłuższych obserwacjach nie da się zauważyć jakiegoś przyspieszenia skryptów. Może gdyby serwer był bardziej obciążony... Ktoś testował? Ten post edytował cicik 16.06.2007, 09:54:33 -------------------- CMS dla Twojej firmy
Wojciech Małota |
|
|
16.06.2007, 15:03:00
Post
#4
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) |
Lipa niestety. Plik skompilowany i oryginalny nie wykonują się tak samo. Mam klasę SQL_sql. Ona zawiera pole protected i metode public, która z niego korzysta. Mam klasę SQL_mysqli, która dziedziczy po SQL_sql. Wywołuję jej metodę odziedziczoną po klasie rodzicu i otrzymuję: Fatal error: Cannot access protected property SQL_mysqli::$tabele_query in F:\strony\php-art\klasy\sql\silniki\sql.php on line 170 A może to coś pomoże: Cytat // you must write DB_common before DB_mysql, as DB_mysql extends DB_common. Przy bcompiler-write-class" title="Zobacz w manualu PHP" target="_manual -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
16.06.2007, 17:04:18
Post
#5
|
|
Grupa: Zarejestrowani Postów: 219 Pomógł: 5 Dołączył: 18.07.2006 Skąd: Piekary Śląskie Ostrzeżenie: (0%) |
Ale ja używam bcompiler_write_file. I powinno działać. Ktoś już wcześniej zgłosił ten bug na PECLu. APC czy rozwiązania podobne (ionCube PHP Acceleratior, Zend Optimizer) są powszechnie stosowane przez providerów. Ja zauważyłem kilkukrotne przyspieszenie u siebie, jak włączyłem kiedyś z ciekawości. Ja jakoś nie zaobserwowałem, skonfigurowałem APC, ściągnąłem APC GUI, pokazuje, że kod jest schachowany. Ale pomiary wykonane przy użyciu APD nie wykazują zbytnich różnic. APC GUI pokazuje, że odwołanie zostało przechwycone przez APC. EDIT: Przyznaję się do błędu. Miałem błąd w php.ini i dlatego APC nie działało. Jednak dziwi mnie jedna rzecz... dlaczego mimo schachowanego kodu wywołuje mi się funkcja __autoload ? Skoro kod jest w pamięci to nie powinna sie wywoływać. EDIT: Ok. Wreszcie wyczaiłem jak to działa. To nie jest tak, że jak sie po raz pierwszy includuje plik z klasą to apc zapamiętuje definicję klasy tylko on zapamiętuje cały plik i przy drugim includzie zamiast ściągać go z dysku to jest zwracany z ramu już w postaci bytecode. Trochę to bez sensu bo musze wywoływać includy ciągle (i dlatego też się __autoload wywołuje). Ciągle tylko nie obserwuję wzrostu wydajności. Ten post edytował cicik 16.06.2007, 18:14:12 -------------------- CMS dla Twojej firmy
Wojciech Małota |
|
|
Wersja Lo-Fi | Aktualny czas: 28.04.2024 - 16:53 |