![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 6 Dołączył: 2.02.2008 Ostrzeżenie: (10%) ![]() ![]() |
Witam!
Niedawno zacząłem pracę z ZF. Wcześniej pisałem albo w czystym PHP albo na gotowych klasach. To jednak zaczęło nudzić, bo każdy projekt wymagał kilku zmian, a ZF ma tyle klas, że wystarczy tylko odpowiednie ładować. Teraz mój problem: Mam system, który do tej pory używał osobnej bazy dla każdej subdomeny i dodatkowo korzysta z wildcard'a dla sudomen. Do tej pory miałem własnej roboty skrypt w PHP, który z głównej bazy czytał dane dla subdomeny i ładował resztę plików dla danej subdomeny. Przepisywanie .htaccess'em. Widzę, że Zend ma klasę Router_Hostname, która rozwiązuje problem samych subdomen. Nie wiem teraz jak mam ładować ustawienia bazy danych. Dla 1 sudomeny wszystko działa, a jakoś nie uśmiecha mi się, żeby pisać skrypt, który wrzuci całego Zend'a do kolejnych katalogów i zmieni dane bazy, bo będzie to wymagało ogrmnej powierzchni przy większej ilości subdomen (teraz jest koło 100, więc 700MB by potrzeba dla projektu). |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Wybacz, że rzucę hasłami, ale nie mam teraz dostępu do serwera, w związku z czym nie mogę pokazać przykładowego kodu.
1. Korzystasz z routera Hostname, gdzie każda subdomena wskazuje na osobny moduł. Moduły to takie mini aplikacje w ZF. 2. Do baz wielu danych możesz skorzystać z zasobu aplikacji o nazwie multidb (Zend_Applicaion_Resource) 3. Ustawianie odpowiedniej bazy możesz zrobić w pliku Bootstrap każdego modułu lub w globalnym pluginie, który wykryje jaki jest bieżący moduł i podłączy odpowiednią bazę. O modułach znajdziesz u mnie na blogu. Router Hostname będę opisywał niedługo ![]() -------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 6 Dołączył: 2.02.2008 Ostrzeżenie: (10%) ![]() ![]() |
Do modułów jeszcze nie doszedłem. Na razie książka i podstawy + właśnie taki eskperyment.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
Teraz mój problem: może na chwilę zapomnijmy o problemie i odwróćmy sytuację do:Mam system, który do tej pory używał osobnej bazy dla każdej subdomeny i dodatkowo korzysta z wildcard'a dla sudomen. Do tej pory miałem własnej roboty skrypt w PHP, który z głównej bazy czytał dane dla subdomeny i ładował resztę plików dla danej subdomeny. Przepisywanie .htaccess'em. Widzę, że Zend ma klasę Router_Hostname, która rozwiązuje problem samych subdomen. Nie wiem teraz jak mam ładować ustawienia bazy danych. Dla 1 sudomeny wszystko działa, a jakoś nie uśmiecha mi się, żeby pisać skrypt, który wrzuci całego Zend'a do kolejnych katalogów i zmieni dane bazy, bo będzie to wymagało ogrmnej powierzchni przy większej ilości subdomen (teraz jest koło 100, więc 700MB by potrzeba dla projektu).
więc problem został uproszczony do odpowiedniego wpisu w .htaccess i uzależnienia tego wszystkiego od jednej zmiennej gdzyz wszystko i tak masz przekierowane na tą domenę główną - a więc wszędzie ścieżki są takie same... WIĘC NIE JEST POTRZEBNA WIĘKSZA POWIERZCHNIA DYSKOWA... -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 6 Dołączył: 2.02.2008 Ostrzeżenie: (10%) ![]() ![]() |
@zegarek84 - wszystko o czym piszesz to prawda, ale jest 1 zasadniczy problem. To wszystko mam napisane od ręki w "czystym" PHP. Teraz chcę to do Zend'a przenieść.
Może ktoś z jakimś przykładem? Problem polega na potrzebie ładowania innych ustawień bazy danych dla każdej subdomeny. Resztę już sobie opiszę w bazie i na kontrolerach. EDIT: Znalazłem już chyba rozwiązanie problemu. http://jaybill.com/2007/09/12/using-the-ze...iple-databases/ Kod $databases = new Zend_Config_Ini('./application/config.ini', 'databases'); Kod $dbAdapter = Zend_Db::factory($config->db->adapter, $config->db->config->toArray()); W czystym PHP napiszę sobie kod, który odczyta subdomenę i podstawi pod powyższy kod odpowiednie dane. Najgorsze jest to, że trzeba będzie zrobić połączenie z MySQL w czystym PHP, ale czego sie nie robi dla projektów. Ten post edytował misiek08 14.06.2010, 21:53:19 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
Czemu nie zrobisz tak jak napisał batman? Nie licząc tego, wszystko jest ok
Cytat 1. Korzystasz z routera Hostname, gdzie każda subdomena wskazuje na osobny moduł. Moduły są te same, a w pluginie który podpinasz do Zend_Controller_Front ustawiasz z jakiej bazy chcesz korzystać i po problemie Co do multiDb w application.ini miał bym wątpliwości, polecał bym stworzyć osobny plik z konfiguracjami bazy zależnymi od subdomeny, ładować przez Zend_Config i przekazywać jako parametr konstruktora pluginu Ten post edytował zend 14.06.2010, 22:24:07 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 6 Dołączył: 2.02.2008 Ostrzeżenie: (10%) ![]() ![]() |
Nie będzie multidb. Będę czystym PHP pobierał z głownej bazy dane dla subdomeny i wstawiał na zasadzie:
Nie znam tak bardzo modułów i Zend'a, żeby zrobić to po Twojemu. Może jakiś przykład albo kod do tego? Ten post edytował misiek08 14.06.2010, 22:35:31 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
O pluginach przeczytasz tu |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 6 Dołączył: 2.02.2008 Ostrzeżenie: (10%) ![]() ![]() |
A mój sposó zły? Trzymanie danych baz w plikach to raczej dla mnie nie jest najlepsze rozwiązanie, bo wolę jednak mieć wszystko w bazie.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
Twój projekt, Ty decydujesz
![]() |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 6 Dołączył: 2.02.2008 Ostrzeżenie: (10%) ![]() ![]() |
Mi chodzi o taką elastyczność w pewnym sensie i jednolitość, ponieważ wszystkie dane chce trzymać w bazie i nic nie trzymać w plikach. Dziękuję za odpowiedź i za nakierowanie na mój własny pomysł.
Jak ktoś ma jakieś uwagi czy dodatkowe pytania do tego samego tematu, to można by ten topic podpiąć jako ciekawy temat. Jest trochę takich aplikacji wildcard'owych. Np. Wordpress MU |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 12:56 |