Помощь по php и mysql, работа с несколькими базами данных - PullRequest
0 голосов
/ 01 июля 2010

Мне нужно работать с несколькими базами данных, ниже приведен мой текущий код.Следующий код кажется очень медленным и имеет проблемы с несколькими соединениями, пока я просматриваю список соединений mysql.

Так что кто-нибудь может сказать мне, что не так с кодом, и помочь мне исправить проблемы и повысить производительность.


$dbHost="localhost";
$dbUser="user";
$dbPass="pass";
$db_1="database1";
$db_2="database2";

$connect=mysql_connect($dbHost, $dbUser, $dbPass);
if (!$connect)
die("Error Connecting to MYSQL");
mysql_select_db($db_1, $connect)
or die("Error Connecting to Database 1");

$remainingDataCount="25000";

$getData=mysql_query("select * from TABLE where FIELD1='data' && FIELD2>'date' && FIELD3='NO'");
$loop=0;
while ($eachData=mysql_fetch_array($getData)) {
    $loop++;
    $UNIQUE_ID=$eachData['id'];
    $UNIQUE_DATA1=$eachData['FIELD4'];
    $DATA2=$eachData['FIELD5'];

    $responseMessage="some text here";
    $currentTimeStamp=date('Y-m-d H-i-s');

    if ($loop>$remainingDataCount) {
        break;
    } else {

        $insertQuery=mysql_query("insert into ".$db_2.".TABLE values('', '$UNIQUE_DATA1', '$DATA2', '$responseMessage', '$currentTimeStamp')");

        if ($insertQuery==true) {

            $updateQuery=mysql_query("update ".$db_1.".TABLE set FIELD1='YES', FIELD2='$responseMessage', FIELD3='$currentTimeStamp' where FIELD4='$UNIQUE_DATA1'");
            if ($updateQuery==false) {
                mysql_query("delete from ".$db_2.".TABLE where FIELD1='$UNIQUE_DATA1'");
            }

        }
    }

}

Ответы [ 2 ]

2 голосов
/ 01 июля 2010

Откройте два соединения с помощью mysql_connect (), выберите правильную базу данных на обоих, а затем используйте необязательный параметр идентификатора ссылки с mysql_query (), чтобы выбрать базу данных для выполнения ваших запросов.

mysql_query ( string $query [, resource $link_identifier ] )

Редактировать: Кроме того, вы можете взглянуть на Mysqli (ee.php.net/manual/en/book.mysqli.php), чтобы вы могли использовать подготовленные операторы, которые, вероятно, значительно ускорят зацикленную вставку..

1 голос
/ 01 июля 2010

SQL-операторы в цикле - проблема производительности номер один. Я думаю, что вы могли бы использовать INSERT SELECT вместо цикла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...