Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pseudo-router - tablica czy SQL?
Forum PHP.pl > Forum > PHP
lukasamd
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....
Ociu
To już poziom wyższy, niż Przeszkole. Przenoszę do PHP :-)

Agavi ma dość ciekawy system routingu oparty o XML, warto popatrzeć.
paw-e-l
moim zadaniem zdecydowanie w oparciu o bazę tak jak masz teraz (oczywiście z indeksem na url_url)
Berg
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
phpion
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.
lukasamd
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ść...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.