php 2つの别サーバーのデータベースのリソースをマッチング

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 2つの别サーバーのデータベースのリソースをマッチング相关的知识,希望对你有一定的参考价值。

<?php
/**
 * 2つの別サーバーのデータベースのリソースをマッチング
 *
 * - MYSQL_ATTR_USE_BUFFERED_QUERY は 非バッファクエリにする為に
 * - MySQLでなくても、2つのCSVやプレーンのファイルのマッチングでも応用可
 **/

$db_global = new PDO("mysql:host=globalhost;dbname=db_global", 'user', 'password');
$db_global->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, FALSE);

$db_user = new PDO("mysql:host=userhost;dbname=db_user", 'user', 'password');
$db_user->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, FALSE);

$accounts = $db_global->query("SELECT * FROM account order by user_id");
$users = $db_user->query("SELECT * FROM user order by user_id");
if ( ! $accounts || ! $users)
{
	exit(1);
}

$account = $accounts->fetch(PDO::FETCH_OBJ);
$user    = $users->fetch(PDO::FETCH_OBJ);
$a = 0;
$u = 0;
$m = 0;
$t = 0;
while($account && $user)
{
	if ( ! $account || $account->user_id > $user->user_id)
	{
		// user only
		$user = $users->fetch(PDO::FETCH_OBJ);
		++$u;
	}
	elseif ( ! $user || $account->user_id < $user->user_id)
	{
		// accont only
		$account = $accounts->fetch(PDO::FETCH_OBJ);
		++$a;
	}
	else
	{
		// match
		$account = $accounts->fetch(PDO::FETCH_OBJ);
		$user    = $users->fetch(PDO::FETCH_OBJ);
		++$m;
	}
	++$t;
}
echo "account only count: $a\n";
echo "user only    count: $u\n";
echo "match        count: $m\n";
echo "total        count: $t\n"; // or $a + $u + $m;

以上是关于php 2つの别サーバーのデータベースのリソースをマッチング的主要内容,如果未能解决你的问题,请参考以下文章

sql データベースの管理

java 継承とインターフェースの使い方阶层が1つのポリモーフィズム

sh データベースをWP01 mysqldump的を使ってSQLファイルに书き出す。

markdown 动的な文字列リソースを使う

markdown 红宝石葡萄でネストしたリソースのAPI

sh 构筑后に降价形式でEC2のリソース情报を吐き出すスクリプト