![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 554 Pomógł: 0 Dołączył: 4.04.2002 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Witam
W mojch szablonach wszechobecne są znaczniki blokow typu: Kod <cos:cos param1="1" param2="2"> jakis sobie tekst</cos:cos> Aby wychwycic te bloki uzywalem wyrazenia:
Jednak przy wiekszych stringach preg_replace_callback potrafi sie wykonywac i 12 sekund. Potem wyniki sa keszowane i dla end usera to nie ma znaczenia, jednak dla administratora przebudowywującego strone jest to nie do przyjęcia. Czy ktoś juz zagłębiał sie w problem wykrywania bloków ( autorowie systemow szablonów mowa o was (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) i dysponuje prostym wyrażeniem lub algorytmem które by rozwiązało ten problem? pozdrawiam rzSeattle |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Hmm, dziwne. Ja w obecnym projekcie uzywam wlasnie preg_replace_callback na kilku(nastu) KB kodu i wykonuje sie on dlugo (ale i tak mniej niz sekunde...) ale glownie ze wzgledu na to co sie dzieje w callbacku (pobieranie danych z bazy i pare innych), jak zostawilem pustego (z odpowiednim returnem) callbacka to calosc smigala standardowo w jakies kilkanascie milisekund.
W systemie szablonow tez tego uzywam i to z znaaaaaacznie bardziej skomplikowanym regexpem (mam jeden - laczony z kilkunastu malych - do wylapywania kazdej - no prawie - mozliwej konstrukcji, wlasnie sprawdzilem.. caly ma ponad 600 znakow), jedna chyba roznica jest taka, ze ja jade plik zrodlowy linia po linii, a nie calosc (bylo mi to potrzebne, zeby moc latwo pokazac w ktorej linii szablonu jest blad). No i nie wiem jak Ty, ale ja kompiluje szablony do php, podobnie jak Smarty tylko, ze szybciej i bez zbednych pierdol (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Z tego co piszesz wnioskuje, ze Ty tez masz kompilowalne szablony, w sumie nie widze innego rozwiazania, zeby to bylo wydajnie. Jeszcze jedna roznica polega na tym, ze ja najpierw wylapuje wszystko co jest w delimiterach przeze mnie ustawionych, a dopiero wewnatrz callbacka robie preg_match z tym duzym regexpem, byc moze to ma jakis wplyw na wydajnosc. W kazdym razie czasy generacji szablonow z reguly maja 2 zera po przecinku, a nierzadko nawet 3, takze cos napewno masz nie tak jak powinno byc. Napisz moze cos wiecej, co masz na mysli przez wieksze stringi. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 17:26 |