/dev/null 2>&1 */ // Définir le chemin d'accès au script define('SCRIPT_PATH', __DIR__); define('BASE_PATH', dirname(dirname(__DIR__))); // Inclure le fichier de configuration require_once dirname(__DIR__) . '/config.php'; // Liste des tables à synchroniser $tables_to_sync = [ 'users' => [ 'sync_method' => 'php', // Utilise le script PHP spécifique pour cette table 'script' => dirname(__DIR__) . '/php/migrate_users.php' ], 'settings' => [ 'sync_method' => 'shell', // Utilise le script shell générique 'script' => dirname(__DIR__) . '/shell/migrate_table.sh' ], // Ajouter d'autres tables selon les besoins ]; // Fonction pour exécuter un script PHP function executePhpScript($script_path) { logOperation("Exécution du script PHP: $script_path"); include $script_path; return true; } // Fonction pour exécuter un script shell function executeShellScript($script_path, $table_name) { logOperation("Exécution du script shell: $script_path $table_name"); $command = "bash $script_path $table_name"; $output = []; $return_var = 0; exec($command, $output, $return_var); foreach ($output as $line) { logOperation($line); } return $return_var === 0; } // Démarrage de la synchronisation logOperation("Démarrage de la synchronisation des bases de données"); logOperation("Date: " . date('Y-m-d H:i:s')); $success_count = 0; $error_count = 0; // Synchroniser chaque table foreach ($tables_to_sync as $table_name => $config) { logOperation("Synchronisation de la table: $table_name"); try { $success = false; switch ($config['sync_method']) { case 'php': $success = executePhpScript($config['script']); break; case 'shell': $success = executeShellScript($config['script'], $table_name); break; default: logOperation("Méthode de synchronisation non prise en charge: {$config['sync_method']}", "ERROR"); $error_count++; continue; } if ($success) { logOperation("Synchronisation réussie pour la table: $table_name", "SUCCESS"); $success_count++; } else { logOperation("Échec de la synchronisation pour la table: $table_name", "ERROR"); $error_count++; } } catch (Exception $e) { logOperation("Erreur lors de la synchronisation de la table $table_name: " . $e->getMessage(), "ERROR"); $error_count++; } } // Résumé de la synchronisation logOperation("Synchronisation terminée"); logOperation("Succès: $success_count, Erreurs: $error_count"); logOperation("Date de fin: " . date('Y-m-d H:i:s')); // Sortie avec code d'erreur si nécessaire exit($error_count > 0 ? 1 : 0);