feat(cluster): real-time auto-sync on apply_config + 5min cron periodic sync

This commit is contained in:
sorcier committed 2026-11-05 19:58:58 +01:00
1 parent 4c49cf8e1c
commit 3f29ac6d2e
3 files changed
+71 -3

No files matched your search

+18 -3
View File
@@ -1793,12 +1793,27 @@ try {
$ami = AmiClient::fromDatabase($db);
$reloadInfo = $ami->reloadPjsipAndDialplan();
// Synchronisation automatique temps réel vers le nœud pair si Cluster actif et Master
$clusterSyncMsg = null;
try {
$cm = new ClusterManager($db);
$cSet = $cm->getSettings();
if (!empty($cSet['enabled']) && !empty($cSet['auto_sync']) && ($cSet['role'] ?? '') === 'master' && !empty($cSet['peer_ip'])) {
$syncRes = $cm->pushSyncToPeer();
$clusterSyncMsg = $syncRes['message'] ?? 'Réplication pair OK';
}
} catch (\Throwable $ce) {
error_log("[CLUSTER] Auto-sync on apply_config error: " . $ce->getMessage());
$clusterSyncMsg = "Alerte réplication pair : " . $ce->getMessage();
}
echo json_encode([
'success' => true,
'message' => 'Configurations écrites, pile PJSIP rechargée et Re-Register SIP envoyé à tous les opérateurs !',
'message' => 'Configurations appliquées avec succès !' . ($clusterSyncMsg ? ' (' . $clusterSyncMsg . ')' : ''),
'details' => [
'files' => $writeStats,
'reload' => $reloadInfo,
'files' => $writeStats,
'reload' => $reloadInfo,
'cluster_sync' => $clusterSyncMsg,
],
]);
break;