feat(cluster): real-time auto-sync on apply_config + 5min cron periodic sync
This commit is contained in:
1 parent
4c49cf8e1c
commit
3f29ac6d2e
3 files changed
+71
-3
No files matched your search
+18
-3
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user