Je passe dans dumpMySQL"; ini_set('memory_limit', '-1'); set_time_limit(0); if($localDebug == 1) ini_set('display_errors', 1); if($localDebug == 1) ini_set('display_startup_errors', 1); if($localDebug == 1) error_reporting(E_ALL); date_default_timezone_set('Europe/Paris'); $dateTimeObj = new DateTime('now', new DateTimeZone('Europe/Paris')); $today = IntlDateFormatter::formatObject($dateTimeObj, "y-MM-dd_HH-mm", 'fr'); $startTime = microtime(true); // Démarrage du timer $tablesExportées = 0; // Connexion PDO try { $connexion = new PDO("mysql:host=$host;dbname=$bdd;charset=utf8", $user, $pass); $connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("Erreur de connexion PDO : " . $e->getMessage()); } $repD = $includePathVar. '/sauvegardes/dump.complet-' .$today. '.sql'; $fichierDump = fopen($repD, "wb"); if (!$fichierDump) {die("Erreur : Impossible d'ouvrir le fichier pour écriture. "); } $entete = "-- Export de la base $bdd au $today -- \n "; fwrite($fichierDump, $entete); $mesg .= $entete; // Récupérer les tables $listeTablesStmt = $connexion->query("SHOW TABLES"); $listeTables = $listeTablesStmt->fetchAll(PDO::FETCH_COLUMN); if($localDebug == 1) $mesg .= "
Tables incluses : "; foreach ($listeTables as $nomTable) { if($localDebug == 1) $mesg .= " | " .$nomTable; // Sauvegarde de la structure fwrite($fichierDump, "-- Structure de la table `$nomTable`\n"); fwrite($fichierDump, "DROP TABLE IF EXISTS `$nomTable`;\n"); $listeCreationsTablesStmt = $connexion->query("SHOW CREATE TABLE $nomTable"); $creationTable = $listeCreationsTablesStmt->fetch(PDO::FETCH_ASSOC); if ($creationTable) { fwrite($fichierDump, $creationTable['Create Table'] . ";\n\n"); } // Sauvegarde des données $donneesStmt = $connexion->query("SELECT * FROM $nomTable"); $donnees = $donneesStmt->fetchAll(PDO::FETCH_ASSOC); fwrite($fichierDump, "-- Données de la table `$nomTable`\n"); foreach ($donnees as $mysqlValue) { $valeurs = []; foreach ($mysqlValue as $valeur) { if (is_null($valeur)) { $valeurs[] = "NULL"; } else { $valeurs[] = "'" . $connexion->quote($valeur) . "'"; } } fwrite($fichierDump, "INSERT INTO `$nomTable` VALUES (" . implode(", ", $valeurs) . ");\n"); } fwrite($fichierDump, "\n"); $tablesExportées++; } fclose($fichierDump); $connexion = null; $endTime = microtime(true); // Fin du timer $elapsedTime = round($endTime - $startTime, 2); // Temps écoulé en secondes $fileSize = round(filesize($repD) / 1024 / 1024, 2); // Taille en Mo // Affichage des statistiques en commentaire à la fin du fichier $stats1 = " -- ----------------------------- -- RÉSUMÉ DE L'EXPORT -- ----------------------------- -- Nombre de tables exportées : $tablesExportées -- Temps écoulé : $elapsedTime secondes -- Taille du fichier dump : $fileSize Mo -- ----------------------------- "; file_put_contents($repD, $stats1, FILE_APPEND); // Affichage des statistiques à l'écran $stats = "Nombre de tables exportées : $tablesExportées
Temps écoulé : $elapsedTime secondes
Taille du fichier dump : $fileSize Mo
-------------------------------
"; $mesg .= '
Export de la base ' .$bdd. ' réalisée avec succès. '; if ($localDebug == 1) $mesg .= '
Les données sont dans le fichier :
Editer le fichier

' .$entete. '
' .$stats; return $mesg; } ?>