108 lines
3.2 KiB
PHP
Executable File
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;
|
|
|
|
?>
|
|
|