Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Jeden CMS - wiele baz danych
Kużdo
post
Post #1





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


Witam,

Projektuję CMSa do zarządzania serwerem pewnej gry. Problem polega na tym, że taki serwer najczęściej posiada kilka odrębnych maszyn na kilka pewnych usług. Zazwyczaj są to dwie lub trzy maszyny dedykowane + serwer dla www, forum, komunikatora aka TS3, panelu graczy/zarządzania serwerem itp. I w taim przypadku na "maszynie www" znajduje się jedna baza danych, na "maszynie nr1" znajduje się druga baza danych, a na "maszynie nr2" znajduje się trzecia baza danych.

Do tej pory robiłem wszystko na stałe, więc było w miarę łatwo. Oczywiście przy każdym połączeniu musiałem wywoływać nowe połączenie SQL, bo innego wyjścia nie ma/nie znam. W tej chwili chciałem przepisać CMSa tak, żeby wszystkie adresy można było łatwo ustawiać z poziomu CMSa. Czyli instalacja (jeżeli jakakolwiek będzie) CMSa polegałaby na podaniu danych do bazy na której miałby się znaleźć CMS (czyli najprawdopodobniej baza z www, forum, itp.). Resztę konfigurowałoby się z poziomu już samego CMSa. Możliwość wpisania adresu IP serwera, loginu, hasła, nazwy bazy, prefisku (o ile będzie), to wszystko jest proste dla mnie do napisania w CMSie. Za to nie mam żadnego pomysłu jak rozwiązać łączenie się z danymi serwerami.

Wiadomo - dane pobierane z bazy i podstawiane zmienne. Pytanie, jak to napisać, żeby to było sprawne, szybkie i bezpieczne... Programowanie obiektowe odpada, bo nie umiem go jeszcze i jakoś nie spieszy mi się do jego uczenia, aczkolwiek jeśli są jakieś skrypty, które mógłbym przejrzeć w celu podpatrzenia jak to można byłoby ugryźć, to chętnie poczytam... Chciałbym, żebyście mi pomogli określić jak za to mniej więcej się zabrać... Chciałem utworzyć jakieś funkcje do łączenia się z bazą, wysyłania zapytań, itp. ale nie mam wizji jak one mogłyby wyglądać (nie zrozumcie mnie źle, wiem jak napisać takie funkcje do zwykłych CMSów z jedną bazą - nie mam wizji do tego projektu akurat, albo po prostu nie wpadłem jeszcze na ten prosty lecz genialny pomysł)...

Z góry dziękuję za każdą wartościową odpowiedź.
Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Jeżeli zajrzałbyś do manuala PHP to zobaczyłbyś jaki jest drugi parametr dla funkcji mysql_query. Jest to identyfikator połączenia czyli innymi słowy dla której bazy danych ma być wykonane to zapytanie.

  1. $connections = array();
  2.  
  3. $connections['strona www'] = mysql_connect(....);
  4. mysql_query('USE nazwa bazy danych;', $connections['strona www']);
  5.  
  6. $connections['serwer gry #1'] = mysql_connect(....);
  7. mysql_query('USE nazwa bazy danych;', $connections['serwer gry #1']);
  8.  
  9. $connections['serwer gry #2'] = mysql_connect(....);
  10. mysql_query('USE nazwa bazy danych;', $connections['serwer gry #2']);
  11.  
  12. // Chcąc wywołać zapytanie dla bazy danych ze stroną WWW
  13. $rs = mysql_query('SELECT ... FROM ...;', $connections['strona www']);
  14. $data = mysql_fetch_assoc($rs);


OOP to paradygmat programowania i nie ma on nic wspólnego z tym jakie problemy będą rozwiązywane w programie. Można bez problemu napisać program, który będzie elastyczny, łatwy w rozbudowie, bezpieczny itp. itd. wykorzystując paradygmat programowania obiektowego/aspektowego/funkcyjnego/strukturalnego/proceduralnego/czy jeszcze jakiś innych. Sam paradygmat nie ma kompletnie nic do tego.

OOP jest czasami szybsze, czasami wolniejsze od kodu strukturalnego. Jednak śladowe różnice w szybkości są niezwykle rzadko priorytetem. W 99% programów jest to problem trzecio czy nawet czwartorzędny.


Jeżeli nie masz żadnego pojęcia dot. OOP - daruj je sobie w tym projekcie. Paradygmat ten jest bardzo prosty, ale mając umysł "skażony" (bardzo złe określenie) strukturalnym podejściem (złe, ponieważ programowanie strukturalne nie jest złe) będziesz najprawdopodobniej pisać kod, który z OOP nie ma nic wspólnego.

Cytat
to załączę go całego...
Nie, wczytana zostanie tylko niezbędna część, tj. ta która po prostu została użyta.
Dodatkowo pierwsze co powinieneś zrobić to upewnić się, że masz na serwerze zainstalowane APC, które pozwoli raz wczytać plik PHP do pamięci i trzymać go tam w postaci bytecode-u, dzięki czemu nie będzie potrzeby wczytywania pliku i jego parsowania przy każdym żądaniu.

Ten post edytował Crozin 3.12.2010, 18:59:04
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 7.10.2025 - 19:31