Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Pseudo-router - tablica czy SQL?
-lukasamd-
post 25.10.2009, 16:51:42
Post #1





Goście







Witam,
dzisiaj zrobiłem sobie pseudo-router do przyjaznych linków.
Pseudo, ponieważ sam skrypt nie rozbija adresu - silnik na którym działa nie jest ani na MVC, ani OOP.

Informacje odnośnie adresu idą za pomocą htaccess przez GET do odpowiedniego pliku i zawsze powinny wyglądać następująco:

Cytat
?seo=to-jest-przykladowy-adres


W pliku tym zabezpieczam ciąg (mysql_real_escape_string) i szukam w bazie w tabeli którą utworzyłem w tym celu.
Jej struktura wygląda tak:

- url_url - varchar(200), unique
- url_typ - varchar(200)
- url_id - smallint(5)

Tabela jest przeszukiwana pod kątem wartości url_url. Jeżeli znajdzie rekord, to wie o jaki moduł serwisu chodzi (np. informacja, artykuł itp.) a także o jakim jest on id. W zależności od typu załączany jest odpowiedni plik i generuje się konkretna treść.

Tak to wygląda w teorii i praktycznie działa tak jak zaplanowałem.
Zastanawiam się jednak, czy budowanie bazy adresów w mysql to oby na pewno dobre rozwiązanie?

Rekordów nie będzie więcej niż 2000, robiłem test przy wygenerowanych około 3000 ciągach i przy wartości unikalnej wyszukiwanie trwa około 0.0007s, a więc niezbyt długo.

Oczywiście mogę również wszystko wpakować do tablicy i zapisać ją do pliku, tylko czy wgrywanie całej i przeszukiwanie jej przy każdym requescie ma w ogóle sens? W tej roli chyba najlepiej sprawdza się baza danych...

Nie wiem, doradźcie winksmiley.jpg

Odświeżam, bo znowu mam dylemat....

Ten post edytował lukasamd 5.10.2009, 16:36:12
Go to the top of the page
+Quote Post
Ociu
post 25.10.2009, 17:01:54
Post #2





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




To już poziom wyższy, niż Przeszkole. Przenoszę do PHP :-)

Agavi ma dość ciekawy system routingu oparty o XML, warto popatrzeć.
Go to the top of the page
+Quote Post
paw-e-l
post 26.10.2009, 10:30:35
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 23
Dołączył: 27.06.2009
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


moim zadaniem zdecydowanie w oparciu o bazę tak jak masz teraz (oczywiście z indeksem na url_url)
Go to the top of the page
+Quote Post
Berg
post 26.10.2009, 10:58:15
Post #4





Grupa: Zarejestrowani
Postów: 180
Pomógł: 37
Dołączył: 1.05.2008
Skąd: Białystok

Ostrzeżenie: (0%)
-----


Ogólnie uważam że jeśli coś nie jest wysoce dynamiczne i nie nie trzeba tego edytować z poziomu panelu administracyjnego to lepiej pakować to do plików. Teraz może i chodzi to dobrze ale jeśli planujesz zwiększenie ruchu to jednak lepiej przenieść to do tablicy php, im mniej zapytań SQL tym lepiej smile.gif
Go to the top of the page
+Quote Post
phpion
post 26.10.2009, 12:09:06
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Berg @ 26.10.2009, 11:58:15 ) *
im mniej zapytań SQL tym lepiej smile.gif

Nie zawsze. Przykładowo: mając bazę geolokalizacji z blisko 80k rekordów (IP do, IP do, kraj) zdecydowanie lepiej wyszukiwać konkretny kraj na poziomie bazy danych. Wpakowanie bazy do tablicy w pliku i includowanie go za każdym razem tylko po to by dostać się do jednego elementu byłoby mniej wydajne niż pobieranie tych danych z bazy. W omawianym przykładzie routera również celowałbym w bazę danych.
Go to the top of the page
+Quote Post
-lukasamd-
post 26.10.2009, 12:24:53
Post #6





Goście







No właśnie też mi się tak wydaje po lekturze kilku artykułów: nawet przy np. 200k odsłon dziennie nie wykorzystam limitu zapytań na shared hostingu, zaś 200k includowania sporego pliku to jednak pewien cios dla pamięci - doliczmy do tego sortowanie, wyszukiwanie i dbanie o unikalność...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:14