Gleichzeitig mehrere DB's connections...

cobraone

Mitglied
Hallo
folgendes Problem liegt mir vor.
Ich will von der DB "admin" die Tabelle "dms_settings"
und von der DB "templates" die Tabelle "dms_tpl" holen.
Als erstes habe ich in PHP eine class geschrieben und dann diese im Code wie folgt geladen. Bis dahin kein Problem!

Erst als ich versuchte die Tabelle "dms_settings" in der DB "admin" zu lesen. Gelesen wurde aber in der DB "templates" in welcher keine gleichnamige Tabelle existiert.
So wurde natürlich die "Table not exists" gemeldet.

Hier der code...

PHP:
$dbadm = new dbstuff;
$dbadm->connect($dbhost_admin, $dbuser_admin, $dbpass_admin, $dbname_admin, $pconnect);
$dbtpl = new dbstuff;
$dbtpl->connect($dbhost_templates, $dbuser_templates, $dbpass_templates, $dbname_templates, $pconnect);
$query = $dbadm->query("SELECT * FROM $dms_settings");
foreach($dbadm->fetch_array($query) as $key => $val) {
  ${'set_'.$key}            = $val;
}

An dem Code der class kann es nicht liegen, denn versuche ich das ganze mit einer DB funktioniert es einwandfrei.

Ich wäre wirklich froh um jede Hilfe!!!

Danke schon im voraus...

coBraOne
 
-

Ich will von der DB "admin" die Tabelle "dms_settings"
PHP:
$query = $dbadm->query("SELECT * FROM $dms_settings");
Ist das Variablenzeichen dort richtig?

Übergibst du die richtigen Werte, wenn du die Verbindung mit der Datenbank herstellst?

Tipp: Du könntest deine connect Methode auch gleich als Konstruktor in die Class schreiben, erspart dir eine Zeile.
 
Ist das Variablenzeichen dort richtig?
Du meinst das $ vor "$dms_settings"?
Ja denn es ist im original Code eine Variabel und nicht direkt der Name - aber es stimmt schon!
Übergibst du die richtigen Werte, wenn du die Verbindung mit der Datenbank herstellst?
Auch hier ja! Wie schon gesagt, funktioniert es mit einer DB ganz gut!
Tipp: Du könntest deine connect Methode auch gleich als Konstruktor in die Class schreiben, erspart dir eine Zeile.
Dass hingegen könntest du mir genauer erklären. Es ist mein erster versuch mit class eine DB anzusteuern und von Konstruktor und so habe ich ehrlich gesagt keine grosse Ahnung! :)

Gruss

coBraOne
 
ja ne gute idee wäre es wenn du die verbindung erstmal schliesst...
dann noch en Tipp die Performance wird zum ****** wenn du auf
10 verschiedene DBs connectest...

ABer mach die Erfahrung *g* :)
 
Zuletzt bearbeitet:
Dann meinst du also dass die Performance eines jeden auf MySQL basierenden Boards zB. im ****** ist? Denn die greifen alle auf mehrere Tables zu (Admin Einstellungen / Foren / Topics / Posts / Templates / Counter / und vieles mehr, dass bei jedem abruf gecheckt, gelesen oder geschrieben wird.) So viel ich weiss laufen die von vBulletin (dieses hier) auch so...??? :p
Gruss coBraOne
 
ja man muss schon den Sachverhalt verstehen.....

Ich will von der DB "admin" die Tabelle "dms_settings"
und von der DB "templates" die Tabelle "dms_tpl" holen.

Entweder du kannst dich nicht gewählt ausdrücken oder
du verfügst über NULL fachwissen.
WEIL kein einziges der Boards auf mehrere DBs zugreift...sondern
nur auf mehrere TABELLEN (TABLES), ergo wenn man auf 10
verschiedene DBs zugreift verändert sich die Performance eklatant.

.... :)
 
Ich habe nie behauptet, dass die Boards auf mehrere DB's zugreifen! So viel Fachwissen hab ich jetzt schon noch. :p
Doch wenn mich nicht alles täuscht (korrigier mich wenn ich falsch liege), hat in deinem Eintrag
...dann noch en Tipp die Performance wird zum ****** wenn du auf
10 verschiedene Tables connectest...
gestanden und nun nach deinem Edit wurde die Tables durch DB's ersetzt und mir wird nun nachgeworfen, dass ich kein, NULL Fachwissen hätte! :-( Dass mit den Boards hab ich nur desswegen so geschrieben und das sollte das Smilie ( :p ) auch ausdrücken... Aber keine Angst! Bin dir nicht böse! :)
Das problem hat sich übrigens gelöst falls es dich interessiert, die Lösung ist im PHP Forum unter "Table 'templates.dms_settings' doesn't exist" eingetragen.
Du sagst dass die performance wird schlechter, je mehr DB's geladen werden. Das ist ja noch logisch! Hier aber meine neue Frage an dich. Webhost Supporter hat gesagt, dass die Performance schlechter werde, wenn die grösse der DB die 5MB marke überschreitet. Was soll ich deiner Meinung nach tun??? Soll ich meine DB 15MB gross werden lassen oder soll ich das auf 3 DB's verteilen? Was rät mir der grosse SQL Meister? :)

Gruss
coBraOne
 
du hast recht ich gebe zu ich hatte mich "verdacht" und Tables
anstatt DBs geschrieben.
Leider weiß ich nicht was dein Webhoster Supporter erzählt, weil
du kannst ja mal die Jungs hier fragen wieviel MB diese DB hat.
Normalerweise sollte die Performance nicht schon bei 5 MB. Vielleicht
meintest du ja 5 GB :) .
Weil es gibt Datenbank in der sind, gut Oracle, 40 GB und die Perfomance
geht nicht eklatant runter. Das ist ja das Ziel einer Datenbank. Wenn
Mysql bei 5 MB schon den Abgang machen würde könntest du ja auch
TextFiles benutzen oder? Aber das kann ich mir nicht vorstellen, da
ich hier, ich habe eben extra mal nachgeschaut, eine Mysql mit
150 MB laufen hab. Aber die Performance hat sich nicht verschlechtert, es
sei denn du achtest auf tausendstel :) .

Also in dem Sinne

bye!
 

Neue Beiträge

Zurück