本文整理汇总了PHP中DB_STRUCTURE_COMMUN::DB_executer_requetes_MySQL方法的典型用法代码示例。如果您正苦于以下问题:PHP DB_STRUCTURE_COMMUN::DB_executer_requetes_MySQL方法的具体用法?PHP DB_STRUCTURE_COMMUN::DB_executer_requetes_MySQL怎么用?PHP DB_STRUCTURE_COMMUN::DB_executer_requetes_MySQL使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DB_STRUCTURE_COMMUN
的用法示例。
在下文中一共展示了DB_STRUCTURE_COMMUN::DB_executer_requetes_MySQL方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: restaurer_tables_base_etablissement
/**
* restaurer_tables_base_etablissement
* Restaurer des fichiers de svg et mettre la base à jour si besoin.
* Pour une restauration individuelle, scindé en plusieurs étapes pour éviter un dépassement du max_execution_time sur de grosses bases.
* Par contre pour une restauration par un webmestre d'un ensemble de structures, c'était trop compliqué à découper, on fait tout d'un coup.
*
* @param string $dossier_temp
* @param int $etape (0 si tout d'un coup)
* @return string
*/
function restaurer_tables_base_etablissement($dossier_temp, $etape)
{
// Pour chaque fichier...
$tab_fichier = FileSystem::lister_contenu_dossier($dossier_temp);
natsort($tab_fichier);
// Si plusieurs fichiers correspondent à une table, il faut que la requête de création soit lancée avant les requêtes d'insertion
$tab_fichier = array_values($tab_fichier);
// Pour réindexer dans l'ordre et à partir de 0
$nb_fichiers = count($tab_fichier);
if ($etape) {
$nb_par_etape = 10;
$i_min = ($etape - 1) * $nb_par_etape;
$i_max = $etape * $nb_par_etape;
$i_stop = min($i_max, $nb_fichiers);
} else {
$i_min = 0;
$i_stop = $nb_fichiers;
}
for ($i = $i_min; $i < $i_stop; $i++) {
$fichier_nom = $tab_fichier[$i];
// ... lancer les requêtes
$requetes = file_get_contents($dossier_temp . $fichier_nom);
DB_STRUCTURE_COMMUN::DB_executer_requetes_MySQL($requetes);
// Attention, sur certains LCS ça bloque au dela de 40 instructions MySQL (mais un INSERT multiple avec des milliers de lignes ne pose pas de pb).
/*
La classe PDO a un bug. Si on envoie plusieurs requêtes d'un coup ça passe, mais si on recommence juste après alors on récolte : "Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute."
La seule issue est de fermer la connexion après chaque requête multiple en utilisant exceptionnellement la méthode ajouté par SebR suite à mon signalement : DB::close(nom_de_la_connexion);
*/
DB::close(SACOCHE_STRUCTURE_BD_NAME);
}
if ($i_stop < $nb_fichiers) {
// Ce n'est pas la dernière étape
return 'Restauration de la base en cours ; étape n°' . sprintf("%02u", $etape) . ' réalisée';
} else {
// Toutes les étapes sont terminées ; tester si la base nécessite une mise à jour, et si oui alors la lancer
$version_base_restauree = version_base_fichier_svg($dossier_temp);
if ($version_base_restauree < VERSION_BASE_STRUCTURE) {
DB_STRUCTURE_MAJ_BASE::DB_maj_base($version_base_restauree);
// Log de l'action
SACocheLog::ajouter('Mise à jour automatique de la base ' . SACOCHE_STRUCTURE_BD_NAME . '.');
return 'Restauration de la base terminée et base mise à jour';
}
return 'Restauration de la base terminée';
}
}