Bonjour à tous.

J'aurais aimé une petite aide.

Que se passe t-il, lorsque deux utilisateurs, au même moment, font appel à une fonction dont le temps d'exécution est assez long (un bon paquet de requêtes SQL) et qui viennent affecter les mêmes enregistrements ?

En gros, pour détailler mon problème :

Utilisateur A
Utilisateur B
Fonction f
Table T
un champ "Lock" dans ma table T

A lance f
Dans f, on teste si Lock vaut 0
Si 0, on fais un UPDATE pour mettre lock à 1, sinon on quitte la fonction
on fait tout plein de traitements.
on remet lock à 0
fin de f

Ensuite (ou simultanément)
B lance f
A priori si A est encore dans la fonction f, on ne peut pas y rester car lock vaut 1. Sans en être certain, j'ai des cas où il semble que les 2 utilisateurs parviennent à y rentrer en même temps...


Je fais un peu de java et je sais qu'on doit souvent utiliser synchronised pour un accès exclusif à certaines ressources, un équivalent éxiste t-il en php ?


Cordialement.