Bonjour à tous,

J'explique ma situation, je dois synchroniser deux calendriers, il y en a un local et l'autre sur un serveur distant dont je récupère les données via une API.
Pour faciliter le tout, ils ont tous deux des attributs et identifiants de réservations différents.

J'ai déjà développé le module de communication de l'api, il fonctionne parfaitement, mais il me reste un problème: la synchronisation de mes calendrier.


Calendrier 1 (local):

attributs d'une reservation:
reservation_ :identifiant de reservation (int autoincrémenté)
chambre__ : clé étrangère qui représente l'identifiant de chambre (int)
chambre_categorie : les configurations différentes que peuvent prendre la chambre (null si il n'y en pas, 1 pour un lit simple, 2 pour un lit double, 3 pour un lit double et un lit simple) ATTENTION: une même chambre peut avoir toutes les configurations
date_entree : date (Y-m-d)
date_sortie : date (Y-m-d)
nb_personnes : int

Calendrier 2 (distant)
attributs d'une réservation:
RES_ID int
CHAMBRE_ID int
RES_PEOPLE int
RES_START_DATE date (Y-m-d)
RES_END_DATE date (Y-m-d)

Méthodes de l'api disponibles:

RES_LISTER(); retourne tous les attributs
RES_AJOUTER(CHAMBRE_ID,RES_PEOPLE,RES_START_DATE,RES_END_DATE); retourne true si effectif sinon false
RES_MODIFIER(RES_ID,RES_PEOPLE,RES_START_DATE,RES_END_DATE); retourne true si effectif sinon false
RES_SUPPRIMER(RES_ID); retourne true si effectif sinon false


Il y a plusieurs spécificités:

1/ Chaque CHAMBRE_ID du Calendrier 2 (distant) correspond à
chambre__ et une chambre_categorie.

Petit exemple :

Calendrier 2 Calendrier 1
Chambre 200 Chambre 15001 Categorie1
Chambre 201 Chambre 15002 Categorie2

2/ l'api n'accepte une requête que toutes les 1secondes.

Voila pour les données brut.


Mon angle d'attaque est le suivant:
J'ai créer une base copie du calendrier 2 en locale avec les mêmes attributs.
J'ai également créer un systeme de Queue

Chaque fois qu'une réservation est faite sur mon calendrier 1, je l'ajoute à la queue pareil pour les modifs et suppressions

En Cron toutes les 1 minutes, je vide la queue, elle va créer la résa sur le calendrier 2 (distant) et si ca a marche elle la crée également sur mon calendrier 2 locale.

d'autre part, toutes les 5 minutes, je récupère les réservations du calendrier 2 distant, si elles ont leur équivalent dans le calendrier 2 locale je vérifie juste qu'elles n'ont pas été modifié/supprimé sinon je la crée dans le calendrier 1 et dans le 2 locale

Voyez vous des choses à améliorer? Avez vous besoin de plus de données? Je suis a votre écoute et vous remercie du coup de main!

ps: Pour ma queue, je cherche un système compatible avec mysql qui ne lance la queue qu'une seule fois