Announcement

Collapse
No announcement yet.

auf 2 MySQL-Servern (gleichzeitig) verbinden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • auf 2 MySQL-Servern (gleichzeitig) verbinden

    Hallo ich wünsche einen Guten Morgen, ich habe eine Function in einer MySQL-Klasse die ich erweitern möchte um auf mehre Datenbank-Servern gleichzeitig zu verbinden und querys an ihnen zu senden...

    Ich habe jeweils in der lokalen Datenbank auf dem lokalen Server eine Tabelle namens "Realms" wo die Datenbank-Server aufgelistet sind. Nun ist das problem, wie stelle ich das an...

    hier die MySQL-Klasse:
    PHP Code:
    class mysql
    {
        
        
    /*************************************************************
        Funktion:     db_open($serv = 'localhost', $user, $pass, $db = 'netvisionv2'); 
        Beschreibung:    stellt die verbindung zur Datenbank her.
        *************************************************************/
        
        
    function db_open($serv 'localhost'$user$pass$db 'netvisionv2'
        {
            if(@
    mysql_connect($serv$user$pass))
            {
                
                if(@
    mysql_select_db($db))
                {
                    return 
    0;
                }
                else
                {
                    return 
    1;
                }
            }
            else
            {
                return 
    1;
            }
            
        }
        
    /*************************************************************
        Funktion:    getQuery($query) 
        Beschreibung:    führt eine Datenbankabfrage aus...
        *************************************************************/ 

        
    function getQuery($query
        {
            
    $sql_qry = @mysql_query($query);
            return 
    $sql_qry;
        }

        function 
    sqlesc($x)
        {
                return 
    "'" . @mysql_real_escape_string($x) . "'";
        }
        
    /*************************************************************
        Funktion:     numrows($x)
        Beschreibung:    gibt das Ergebnis als Zahl aus (zählen)
        *************************************************************/ 

        
    function numrows($x)
        {
            return 
    $this->num_qry = @mysql_num_rows($x);
        }

    /*************************************************************
        Funktion:     sql_error() 
        Beschreibung:    gibt die letzte Fehlermeldung an die Error-Klasse weiter
        *************************************************************/ 
        
    function sql_error() 
        {
            global 
    $nv_error;
            if(
    mysql_errno() != 0
            { 
                return 
    $nv_error->get_error(@mysql_errno(), @mysql_error()); 
            }    
        }
        
    /*************************************************************
        Funktion:     sql_error() 
        Beschreibung:    gibt das ergebnis als Array aus...
        TODO: Vllt mal fetch_row und fetch_array einbauen... später....
        *************************************************************/ 
        
    function fetch_qry($x
        {
            return @
    mysql_fetch_array($x);
        }
    }

    $nv_mysql = new mysql// sich selbst deklarieren... 
    welche funkrionen muss ich da wie abändern?

    Als Datensatz, der Tabelle "Realm" ist folgender...

    id | server | status | last_seen
    1 | mrtweek.dyndns.org | 1 | 0

    Als Connection-ID und query-ID habe ich mir überlegt, dass ich die Spalte "id" nehme...
    Zuletzt editiert von MrTweek; 03.09.2010, 06:11.

  • #2
    Hallo,

    wenn du auf mehrere MySQL-Server gleichzeitig verbinden willst, dann mußt du die Verbindung jeweils mittels mysql_connect() herstellen. Der Rückgabewert dieser Funktion ist eine MySQL Verbindungs-Kennung. Diese kannst du dann bei jeder weiteren MySQL-Funktion angeben.
    Deine MySQL-Klasse ist dafür in keinster Weise geeignet, da sie keinerlei Verbindungs-Kennung berücksichtigt und damit IMMER von der zuletzt geöffneten ausgegangen wird. Du müsstest diese Klasse also KOMPLETT überarbeiten und Mehrverbindungsfähig machen.

    Bsp.:
    PHP Code:
    $linkDB1 mysql_connect('mysqlhost1''mysql_user1''mysql_password1');
    $linkDB2 mysql_connect('mysqlhost2''mysql_user2''mysql_password2');

    mysql_select_db('foo'$linkDB1);
    mysql_select_db('bar'$linkDB2);
    ...
    $result1 mysql_query('SELECT * FROM irgendwas WHERE 1=1'$linkDB1);
    $result2 mysql_query('SELECT * FROM wasanderes WHERE 1=1'$linkDB2);

    ... 
    Gruß Falk

    P.S.: Das gehört wohl eher in den PHP-Bereich, deshalb verschiebe ich das mal.
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Okay, die Klasse werde ich abändern, jedoch frage ich mich, ob es möglich ist eine Verbindungserkennung zu realisieren

      dass zum Beispiel... die Seite das Query auch zur dazugehörigen Datenbank zurücksendet. weil die Verbindungen zu den Servern ja generel... dynamisch sind...

      Comment


      • #4
        siehe mein Beispiel...
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment

        Working...
        X