本文整理汇总了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';
}
}