Bonjour,
J'ai lu pas mal de threads ici et ailleurs, mais je ne suis pas convaincu que ce que compte faire est correct.
Mon problème est simple. Je veux récupérer les enregistrements qui ne sont pas notés comme "traités" puis les noter comme traités.
Il y a bien sûr un problème de concurrence, pour ne pas donner des enregistrements non traités à deux clients différents.
mon idée de base est
Est-ce que cette façon de faire est correcte? Surtout, est-ce qu'elle me garanti que deux clients ne recevront pas les mêmes enregistrements?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 mysqli_query("start transaction"); mysqli_query("select ... from ... where `processed` = 0"); // Traitement des données du select mysqli_query("update set `processed` = 1 where `processed` = 0"); mysqli_query("commit");
Je n'ai jamais travaillé avec de la concurrence en base de données et je ne suis pas très sûr que c'est cela fonctionne ainsi.
merci de votre aide
edit: modification du code pour meilleure compréhension
Partager