当前位置: 首页>>代码示例>>PHP>>正文


PHP DB_STRUCTURE_COMMUN::DB_recuperer_table_structure方法代码示例

本文整理汇总了PHP中DB_STRUCTURE_COMMUN::DB_recuperer_table_structure方法的典型用法代码示例。如果您正苦于以下问题:PHP DB_STRUCTURE_COMMUN::DB_recuperer_table_structure方法的具体用法?PHP DB_STRUCTURE_COMMUN::DB_recuperer_table_structure怎么用?PHP DB_STRUCTURE_COMMUN::DB_recuperer_table_structure使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DB_STRUCTURE_COMMUN的用法示例。


在下文中一共展示了DB_STRUCTURE_COMMUN::DB_recuperer_table_structure方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: sauvegarder_tables_base_etablissement

/**
 * sauvegarder_tables_base_etablissement
 * Remplir le dossier temporaire avec les fichiers de svg des tables
 * Pour une sauvegarde individuelle, scindé en plusieurs étapes pour éviter un dépassement du max_execution_time sur de grosses bases.
 * Par contre pour une sauvegarde par un webmestre d'un ensemble de structures, c'était trop compliqué à découper, on fait tout d'un coup.
 *
 * @param string $dossier
 * @param int    $etape   (0 si tout d'un coup)
 * @return string
 */
function sauvegarder_tables_base_etablissement($dossier_temp, $etape)
{
    if ($etape == 0 || $etape == 1) {
        // Nombre d'enregistrements à récupérer par "SELECT * FROM table_nom" et donc ensuite inséré par "INSERT INTO table_nom VALUES (...),(...),(...)"
        $nb_lignes_maxi = determiner_nombre_lignes_maxi_par_paquet();
        // Lister les tables présentes et le nombre de boucles à effectuer afin de récupérer les données des grosses tables (nombre d'enregistrements / nb_lignes_maxi)
        // On met ça en session pour les appels suivants si sauvegarde en plusieurs étapes.
        $_SESSION['tab_tables_info'] = array();
        $DB_TAB = DB_STRUCTURE_COMMUN::DB_recuperer_tables_informations();
        foreach ($DB_TAB as $DB_ROW) {
            // $nb_lignes_maxi est prévu pour "sacoche_saisie" qui comporte beaucoup de lignes, mais les tables avec des champs longs deviennent lourdes avec moins de lignes
            switch ($DB_ROW['Name']) {
                case 'sacoche_image':
                    $nb_lignes_maxi_for_table = $nb_lignes_maxi / 100;
                    break;
                case 'sacoche_user':
                    $nb_lignes_maxi_for_table = $nb_lignes_maxi / 4;
                    break;
                case 'sacoche_officiel_saisie':
                    $nb_lignes_maxi_for_table = $nb_lignes_maxi / 2;
                    break;
                default:
                    $nb_lignes_maxi_for_table = $nb_lignes_maxi;
            }
            $nombre_boucles = max(ceil($DB_ROW['Rows'] / $nb_lignes_maxi_for_table), 1);
            // Parcourir au moins une fois la boucle pour une table sans enregistrement
            for ($numero_boucle = 0; $numero_boucle < $nombre_boucles; $numero_boucle++) {
                $_SESSION['tab_tables_info'][] = array('TableNom' => $DB_ROW['Name'], 'NombreLignes' => $nb_lignes_maxi_for_table, 'NombreBoucles' => $nombre_boucles, 'NumeroBoucle' => $numero_boucle);
            }
        }
        if ($etape == 1) {
            // Fin de la première étape
            return 'Sauvegarde de la base en cours ; étape n°' . sprintf("%02u", $etape) . ' réalisée';
        }
    }
    // Créer les fichiers sql table par table, et morceau par morceau...
    if (count($_SESSION['tab_tables_info'])) {
        $i_stop = $etape ? min(10, count($_SESSION['tab_tables_info'])) : count($_SESSION['tab_tables_info']);
        for ($i = 0; $i < $i_stop; $i++) {
            $tab_table_info = array_shift($_SESSION['tab_tables_info']);
            extract($tab_table_info);
            // TableNom NombreLignes NombreBoucles NumeroBoucle
            $fichier_contenu = '';
            // ... la structure
            if ($NumeroBoucle == 0) {
                $fichier_contenu .= 'DROP TABLE IF EXISTS ' . $TableNom . ';' . "\r\n";
                $DB_ROW = DB_STRUCTURE_COMMUN::DB_recuperer_table_structure($TableNom);
                $fichier_contenu .= str_replace('`', '', $DB_ROW['Create Table']) . ';' . "\r\n";
                $fichier_contenu .= 'ALTER TABLE ' . $TableNom . ' DISABLE KEYS;' . "\r\n";
            }
            // ... les données
            $tab_ligne_insert = array();
            $from = $NumeroBoucle * $NombreLignes;
            $DB_TAB = DB_STRUCTURE_COMMUN::DB_recuperer_table_donnees($TableNom, $from, $NombreLignes);
            if (!empty($DB_TAB)) {
                foreach ($DB_TAB as $DB_ROW) {
                    $DB_ROW = array_map('formater_valeur', $DB_ROW);
                    $tab_ligne_insert[] = '(' . implode(',', $DB_ROW) . ')';
                }
                $fichier_contenu .= 'INSERT INTO ' . $TableNom . ' VALUES ' . "\r\n" . implode(',' . "\r\n", $tab_ligne_insert) . ';' . "\r\n";
            }
            if ($NumeroBoucle == $NombreBoucles - 1) {
                $fichier_contenu .= 'ALTER TABLE ' . $TableNom . ' ENABLE KEYS;' . "\r\n";
            }
            // Enregistrer le fichier
            $fichier_sql_nom = 'dump_' . $TableNom . '_' . sprintf("%03u", $NumeroBoucle) . '.sql';
            FileSystem::ecrire_fichier($dossier_temp . $fichier_sql_nom, $fichier_contenu);
        }
        if ($etape > 0) {
            return 'Sauvegarde de la base en cours ; étape n°' . sprintf("%02u", $etape) . ' réalisée';
        } else {
            unset($_SESSION['tab_tables_info']);
            return TRUE;
        }
    } else {
        // A la dernière étape on ne fait rien ici, on zippe juste les fichiers après appel de cette fonction
        unset($_SESSION['tab_tables_info']);
        return 'Sauvegarde de la base terminée';
    }
}
开发者ID:Qwaseur,项目名称:SACoche,代码行数:90,代码来源:fonction_dump.php


注:本文中的DB_STRUCTURE_COMMUN::DB_recuperer_table_structure方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。