[PHP] mehrere Datenbanken auf unterschiedlichen Systemen durchsuchen

anddie

Well-known member
ID: 171
L
3 Mai 2006
2.270
133
Hi,

ich habe hier auf mehreren Systemen jeweils eine Datenbank.
Jetzt muss ich über eine Webseite (die nochmal auf einem extra System läuft), in jeder Datenbank in jeweils der gleichen Tabelle einen bestimmten String suchen.

Geht dies mit PHP irgendwie direkt in einem Rutsch oder muss ich jedesmal zu den DB-Servern eine Connection aufbauen, meine Abfrage hinjagen, Connection schließen und dann zum nächsten DB-Server switchen? Fände ich arg unschön.

anddie
 
Naja, du kannst auch mehrer Connections gleichzeitig haben, aber sehr viel schöner ist das auch nicht...
PHP:
$server1 = mysql_connect('server1', 'root', '');
$server2 = mysql_connect('server2', 'root', '');
$server3 = mysql_connect('server3', 'root', '');

$query = 'SELECT foo FROM bar';
$result1 = mysql_query($query, $server1);
$result2 = mysql_query($query, $server2);
$result3 = mysql_query($query, $server3);
 
Probier mal das hier
PHP:
function mysql_multiquery()
{
	$args = func_get_args();
	$query = array_shift($args);
	$data = array();
	foreach($args AS $conn) {
		$result = mysql_query($query, $conn);
		while($data[] = mysql_fetch_assoc($result));
		array_pop($data);
	}
	return $data;
}

$conn1 = mysql_connect('server1', 'root', '');
$conn2 = mysql_connect('server2', 'root', '');
$conn3 = mysql_connect('server3', 'root', '');

$query = 'SELECT foo FROM bar';
$data = mysql_multiquery($query, $conn1, $conn2, $conn3);
print_r($data);

Ist wie immer ungetestet, aber es sollte funktionieren ;)

Nur bei GROUP BY und COUNT() (etc.) funktioniert es natürlich nicht wie gewünscht...
 
Xgame schrieb:
Probier mal das hier
Danke dir.
Aber mittlerweile hat es sich erledigt, da jetzt für viel Geld ein extra SQL-Server angeschafft wird, wo alle anderen Daten hinrepliziert werden (k.A. wie so MS-SQL-Server das machen). Bekloppt, aber wenn das von oben so entschieden wird..... (dafür hab ich dann nix mehr damit am Hut *aufatme*)

Xgame schrieb:
Nur bei GROUP BY und COUNT() (etc.) funktioniert es natürlich nicht wie gewünscht...
Wäre in dem Fall eh wurscht, da das nicht benötigt wäre.
Werde das Ganze aber trotzdem mal versuchen zu testen, auch wenn ich noch nicht genau weiß, auf was für Systemen.

anddie