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.
Post
#1
|
|
|
Admin Techniczny Grupa: Administratorzy Postów: 2 072 Pomógł: 93 Dołączył: 5.07.2005 |
Zgłoszono zapotrzebowanie na taki temat więc tworzę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Myśl przewodnia: "W jaki sposób tworzyć routery na potrzeby naszych aplikacji, jakie są wydajne a jakie nie. Jakich używać a jakich nie używać." |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 367 Pomógł: 10 Dołączył: 20.05.2005 Ostrzeżenie: (0%)
|
Przeglądając framework Zenda, system Rutowania oparty jest o jeden Router_Rewrite zawierający tablicę obiektów tras, na których poźniej wykonywana jest pętla foreach i każdemu z osobna jest wywoływana metoda $route->match($pathInfo).
Pomysł bardzo wygodny, bo możemy definiować sobie tyle tras różnego rodzaju ile chcemy, implementując oczywiście odpowiedni interfejs. Minusem jest jednak wydajność takiego rozwiązania. Myśle że lepszym pomysłem byłoby rozdzielić Router_Rewrite na routery: a) Rewrite (domyślny ostatni w kolejności do sprawdzania router) - brak magazynowania tras, bo nie byłoby takiej potrzeby ponieważ router wyciąga parametry z tego co dostaje (/onas/kontakt) B) Static (statyczny router): - magazynuje tylko statyczne trasy i jej parametry - brak dynamicznych parametrów - przechowuje trasy w tablicy a indeksem tablicy jest szablon trasy (np. o-nas,kontakt.html) - błyskawiczne znajdowanie trasy c) Static Rewrite (statyczno-dynamiczny router): - magazynuje tylko statyczne trasy i jej parametry - możliwość dynamicznych parametrów (id/3) - przechowuje trasy w tablicy a indeksem tablicy jest szablon(np. /pl/wydarzenia-o-biznesie) trasy (np. /pl/wydarzenia-o-biznesie/id/5 gdzie /pl/wydarzenia-o-biznesie to trasa statyczna a id/5 to dodatkowy parametr dynamiczny) - dość szybkie znajdowanie tras d) Regex (rutowanie za pomocą wyrażeń regularnych) - magazynuje wszelkiego rodzaju trasy i ich parametry - przechowuje trasy w tablicy a indeksem jest pattern wyrażenia regularnego - niestety mało wydajne wyszukiwanie - konieczność użycia wyrażeń regularnych W pierwszej kolejności nasz framework zacząłby od sprawdzania tras statycznych, następnie od statyczno - dynamicznych, potem wyrażenia regularne i na koniec rewrite który wyciąga z urla parametry jeśli nie znaleziono nic w powyższych routerach. Po testach szybkości: 3 krotnie szybciej routing się wykonuje jeśli mamy 3 routery a trasy i parametry przechowywujemy na tablicach, niż używając jednego routera i przechowywując instancje obiektów tras w jednej tablicy. Routing oparty o instancje obiektów tras: Dodanie tras statycznych:0.00089502334594727 Dodanie tras regex:0.0009760856628418 Szukanie tras:0.00070309638977051 Czas całkowity:0.0026209354400635 Routing oparty o 3 routery i tablicę do przechowywania tras i parametrów: Dodanie tras statycznych:0.00034093856811523 Dodanie tras regex:0.00036096572875977 Szukanie tras:0.00030183792114258 Czas całkowity:0.0010831356048584 Ten post edytował eai 21.07.2008, 10:59:55 |
|
|
|
kwiateusz Routery i sposoby routingu 21.07.2008, 09:31:30
Cysiaczek Mam prośbę: czy mógłbyś wykonać miarodajne testy n... 21.07.2008, 15:46:24
eai To były testy w pętli for i <= 100, robiłem tes... 21.07.2008, 15:49:12 
Sedziwoj Cytat(eai @ 21.07.2008, 16:49:12 ) To... 23.07.2008, 09:58:10
SHiP Ja swój router oparłem o dynamiczne dobierani... 31.07.2008, 10:41:15 
bigZbig Cytat(SHiP @ 31.07.2008, 11:41:15 ) .... 21.10.2008, 18:33:01
Sedziwoj @SHiP
Wiesz, można mieć tak że jest obiekt który t... 31.07.2008, 14:06:06
splatch Bardzo dobry routing posiada Agavi, opis w dokumen... 9.09.2008, 08:02:23
jarek_bolo W Kohanie integrują Routing oparty na tym: http://... 9.09.2008, 15:26:44
Sedziwoj @bigZbig
Nie chodzi o to aby wykorzystywać wi... 21.10.2008, 22:51:19 
bigZbig Cytat(Sedziwoj @ 21.10.2008, 23:51:19... 24.10.2008, 14:46:52 
Sedziwoj Cytat(bigZbig @ 24.10.2008, 15:46:52 ... 27.10.2008, 10:38:42
Sh4dow Nie wiem ale czasami takiego sposobu rozwiązywania... 22.10.2008, 10:04:23
Moli W temacie ostatnio nikt nie pisze, więc opiszę w j... 29.12.2008, 21:39:15
wlamywacz No i może ja swój router opiszę. Zasada jego dział... 30.12.2008, 15:01:24
bim2 To może ja zapodam już gotowy Router. Pe... 13.01.2009, 23:25:59
bigZbig @bim2 Widze, że coś podobnego do rootera w Zend Fr... 13.02.2009, 15:09:52
bim2 W sumie można dopisać do tych confingu które położ... 13.02.2009, 15:53:11
Helid Najpraktyczniejszym rozwiązaniem jest już powyżej ... 10.02.2010, 19:01:33
tomahawk Pozwolę sobie odkopać temat.
Jak proponujecie prz... 1.08.2010, 20:36:41 
bmL Cytat(tomahawk @ 1.08.2010, 21:36:41 ... 15.10.2010, 00:18:58
NuLL 1. W mojej opinii dane z routingu powinno sie wyko... 2.08.2010, 20:29:54
Ormin A teraz coś innego , hasło Router, ale nie chodzi ... 2.09.2010, 17:59:38
hind ja u siebie mam rozwiązane to w ten sposób że do k... 15.10.2010, 09:15:35
Crozin CytatJedyny minus to to że articleName (które dopi... 15.10.2010, 14:28:21
bmL Będę musiał sprawdzić jak to jest dokładnie zrobio... 15.10.2010, 15:05:59
mrWodoo Mój router
http://wklej.to/UbZca
Klucz zabezp. - 1... 2.05.2013, 14:47:24
em1X Cytat(mrWodoo @ 2.05.2013, 15:47:24 )... 19.10.2013, 00:08:43 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 04:39 |