2010-07-01 4 views
0

Je dois travailler sur plusieurs bases de données, et ci-dessous est mon code actuel. Le code suivant semble être très très lent et avoir des problèmes avec plusieurs connexions pendant que je regarde la liste de connexion mysql.PHP et mysql aider, travailler avec plusieurs base de données

Donc, quelqu'un peut-il me laisser savoir ce qui ne va pas avec le code et m'aider à corriger les problèmes et des performances plus rapides.


$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'"); 
      } 

     } 
    } 

} 

Répondre

2

Ouvrir les deux connexions avec mysql_connect(), sélectionnez la base de données correcte sur les deux et puis utilisez le paramètre identifiant de connexion en option avec mysql_query() pour choisir la base de données pour exécuter vos requêtes sur.

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

Edit:, vous pouvez également jeter un oeil à Mysqli (ee.php.net/manual/en/book.mysqli.php) afin que vous puissiez utiliser des instructions préparées qui accélérerait probablement l'insert en boucle de façon spectaculaire.

1

Les instructions SQL dans une boucle constituent un problème de performance numéro un. Je pense que vous pourriez utiliser INSERT SELECT au lieu de la boucle

Questions connexes