1

私はデータベースを持っています(それを呼びましょうA

複数のDBに情報が必要です(B、C、Dにはまったく同じ情報が必要です)

それらすべてを (X) 時間ごとに自動更新するものを作成できますか?

#

IIS 7/php を使用して 2 つの joomla コンポーネントを同期するには、これが必要です。

試してみました(最初はうまくいきますが、変更すると、このコンポーネントにはプライマリがないため、失敗します):

#

データの取得

$mysqli = @new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_WORLD);

/* Vérification de la connexion */
if (mysqli_connect_errno()) {
    die("&error=".mysqli_connect_error()."&");
    exit();
}


$query = "  SELECT  table_name
            FROM    information_schema.tables
            WHERE   table_name LIKE '%XXXXXXX%'";

$arrTableList   = array();
$allInArray     = array();
if ($result = $mysqli->query($query)) {

    /* Récupère un tableau d'objets */
    while ($obj = $result->fetch_object()) {
        $arrTableList[] = $obj->table_name;
    }

    /* free result set */
    $result->close();
}

foreach($arrTableList as $key => $value){

    $query = "  SELECT  *
                FROM    $value";

    if ($result = $mysqli->query($query)) {

        /* Récupère un tableau d'objets */
        while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
            $allInArray[$value][] = $row;
        }

        /* free result set */
        $result->close();
    }

}

挿入機能

function toSwich($newDb, $tmpTag){
    global $mysqli;
    global $allInArray;
    global $tag1;

    $mysqli->select_db($newDb);

    foreach($allInArray as $table => $tableArrayData){

        $table  =   str_replace ($tag1, $tmpTag, $table);
        foreach($tableArrayData as $uselessKey => $valueArray){
            $keyList    = "";
            $valueList  = "";
            $query = "SELECT COUNT(*) FROM $table WHERE ";
            foreach($valueArray as $key => $value){
                $key        =    $mysqli->real_escape_string($key);
                $value      =    $mysqli->real_escape_string($value);

                $keyList    .=  $key . ",";
                $valueList  .=  "'" . $value . "',";

                $query      .=  " $key = '$value' AND";
            }

            $query      =   substr($query,0,-3);
            $valueList  =   substr($valueList,0,-1);
            $keyList    =   substr($keyList,0,-1);

            if(!$result = $mysqli->query($query)){
                print_r($mysqli->error);
                echo "<br />";
                print_r($query);
                echo "<br />";
                exit();

            }
            $row = $result->fetch_row();
            if((int)$row[0] == 0){
                if(!$mysqli->real_query("INSERT INTO $table ($keyList) VALUES ($valueList)")){
                    print_r($mysqli->error);
                    exit();
                }
            }
        }
    }

}
4

1 に答える 1

1

マスター/スレーブ レプリケーション スキーマを構成します。データベースを常に同期させます。

レプリケーションを構成する方法の例を次に示します。Mysql でマスター スレーブ レプリケーションを構成するための 3 つのジャンプ ステップ

于 2012-04-25T14:36:14.263 に答える