Fork me on GitHub

Rapport de message :*
 

changement d'hébergeur

Titre du sujet : changement d'hébergeur
par setas sur 30/01/2009 10:24:28

Je suis en train de changer d'hébergeur.
Je suis coincé depuis 2 semaines à cause du transfert de la base de donnée. C'est que la base de mon site Xoops est grosse, le sql généré dépasse les 80M.

Même table après table j'arrive a un time out pour les plus grosses (26M).

J'ai essayé avec le module backup (des chinois). L'exportation ne pose pas de problème, mais à l'importation sur l'autre hébergeur, ça coince. En effet, pour accéder au module, il faut déjà qu'une bonne partie de la DB soit remplie, puis il faut charger les tables les unes après l'autre, mais il faut aussi faire les "DROP TABLE". Du coup, en traitant une table, je me suis retrouvé avec une page blanche :-o. plus accès au site sur le nouvel hébergeur ... j'étais bon pour recommencer à charger des tables une à une depuis phpmyadmin ... Pfffff !

J'ai donc essayé de faire un petit programme pour charger ces tables automatiquement (ci-dessous), les unes après les autres. Mais il en traite un bout et après "time out". et table seulement partiellement chargée et dur dur de s'y retrouver ...

Je pourrais bien continuer mon programme, et spliter les trops gros fichiers, puis trouver comment lancer ça automatiquement en plusieurs fois pour éviter les time out ... mais c'est quand même de la très grosse bricole.


N'y a-t'il pas un moyen professionnel de transférer une grosse DB d'un hébergeur à un autre ????



<?

$DEBUG    = @$_GET["DEBUG"] ;      // 
if (!$DEBUG$DEBUG 'NO' ;            // 


// initialisations data base
// =========================

mysql_connect('***************','***********','*********3');
mysql_select_db('************');


$fp fopen('log.txt''w');  // fichier log

$dir    './uploads/backup/';
$files scandir($dir ,1);

/* result like :
Array
(
    [0] => truc.sql
    [1] => machin.sql
    [2] => chose.sql
    [3] => ..
    [4] => .
)
 // donc éliminer les 2 derniers
*/

$nb_files count($files) - ;

if (
$DEBUG=='YES'$nb_files ;

for ( 
$counter 0$counter $nb_files$counter += 1)
{



        
$FileName $dir."/".$files[$counter] ;
        
fwrite($fp"FILE : ".$FileName." n ============================ nn");

        
$all_sql file_get_contents($FileName);
        
//$all_sql = trim($all_sql);

        
$len strlen ($all_sql) ;
        
        echo 
$FileName." nbcar : ".$len."<br>" ;


        
$pos ;
        
$oldpos ;
        
$count 0;
        
$FailCount 0;

// BOUCLE dans le fichier
// ======================

    
while ( $pos strpos$all_sql ';
$oldpos)   )
    {
        
//echo $pos."<br>" ;

        
$sql substr($all_sql,$oldpos ,($pos-$oldpos) + 1);
        if (
$DEBUG=='YES'
        {
          
fwrite($fp"nde ".$oldpos." à ".$pos."n");
          
fwrite($fp"requête :n".$sql."n");
        }


        
        
$oldpos $pos ;

        
$result mysql_query($sql);
        if (!
$result) {
            
//die('Requête invalide : ' . mysql_error());
             //echo  mysql_error()."<br>n" ;
             //echo $sql."<br>" ;
             
if ($DEBUG=='YES')
             {
                 
fwrite($fp"FAIL N° ".$FailCount." n");
                 
fwrite($fpmysql_error()."n");
                 if (
$FailCount>20$oldpos 100000000 //force l'arrêt de la boucle
            
}
            
$FailCount += ;
        }
        else
        {
          
$count =$count ;
          if (
$DEBUG=='YES')
          {
            
fwrite($fp"SUCCESS ! ".$count." n");
            if (
$count>20$oldpos 100000000 //force l'arrêt de la boucle
          
}
        }

    }

            echo 
$count." elements added n"."<br>" ;
            echo 
$FailCount." elements with errors n"."<br>" ;
            
fwrite($fp$count." elements added n");
            
fwrite($fp$FailCount." elements with errors nn");

}
    
fclose($fp);



?>

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

69 Personne(s) en ligne (53 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 69 | Plus ...