alpha_full/admin/adminInclude/Outillage/migrate_requete.php
2026-04-06 22:58:51 +02:00

108 lines
3.2 KiB
PHP
Executable File

<?php
$nomFicAppelant = basename(__FILE__);
// Inclusion de la bibliothèque PHP pour générer un fichier Excel
require_once '/datas/07Prod/include/vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
// Définition des chemins
$scanDir = '/datas/07Prod/wwwRoot/alpha.wbadm/';
$outputDir = '/datas/07Prod/wwwRoot/alpha.wbadm/admin/adminInclude/Outillage/';
$modifiedFiles = [];
// Fonction pour optimiser la requête SQL
function optimizeQuery($query) {
// Optimisation des requêtes SQL : passage des requêtes classiques à des requêtes préparées.
$query = preg_replace_callback('/(\w+)\s*=\s*(\d+)/', function ($matches) {
// Remplacer les requêtes avec des valeurs directement insérées par des paramètres préparés
return $matches[1] . ' = :' . $matches[1];
}, $query);
return $query;
}
// Fonction pour scanner un fichier et optimiser les requêtes
function scanFile($filePath) {
$content = file_get_contents($filePath);
// Recherche de toutes les requêtes SQL dans le fichier
if (preg_match_all('/(SELECT|INSERT|UPDATE|DELETE).*?;/is', $content, $matches)) {
$originalContent = $content;
$modifiedContent = $content;
// Optimiser chaque requête trouvée
foreach ($matches[0] as $query) {
$optimizedQuery = optimizeQuery($query);
$modifiedContent = str_replace($query, $optimizedQuery, $modifiedContent);
}
// Si des changements ont été effectués
if ($modifiedContent !== $originalContent) {
// Sauvegarde du fichier avant modification
copy($filePath, $filePath . '.old');
// Écrire le fichier modifié
file_put_contents($filePath, $modifiedContent);
return true;
}
}
return false;
}
// Fonction pour scanner le répertoire et appliquer l'optimisation
function scanDirectory($dir) {
global $modifiedFiles;
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
foreach ($iterator as $file) {
if ($file->isFile() && pathinfo($file->getFilename(), PATHINFO_EXTENSION) == 'php') {
if (scanFile($file->getRealPath())) {
$modifiedFiles[] = [
'filePath' => $file->getRealPath(),
'savedAs' => $file->getRealPath() . '.old'
];
}
}
}
}
// Fonction pour générer le rapport Excel
function generateExcelReport() {
global $modifiedFiles;
// Créer un objet Spreadsheet
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// En-têtes
$sheet->setCellValue('A1', 'Fichier Modifié');
$sheet->setCellValue('B1', 'Chemin du Fichier');
$sheet->setCellValue('C1', 'Nom du fichier Sauvegardé');
// Ajouter les données
$row = 2;
foreach ($modifiedFiles as $file) {
$sheet->setCellValue('A' . $row, $file['filePath']);
$sheet->setCellValue('B' . $row, $file['filePath']);
$sheet->setCellValue('C' . $row, $file['savedAs']);
$row++;
}
// Écriture du fichier Excel
$writer = new Xlsx($spreadsheet);
$reportPath = $outputDir . 'report_' . date('YmdHis') . '.xlsx';
$writer->save($reportPath);
return $reportPath;
}
// Lancer le scan du répertoire
scanDirectory($scanDir);
// Générer le rapport
$reportPath = generateExcelReport();
echo "Rapport généré : " . $reportPath;
?>