Bonjour,
Dans le cadre d'un projet, une page permet de réaliser un traitement. Ce dernier étant assez long, j'ai décidé de mettre en place une barre de chargement. Pour cela, j'ai créé une table "traitements" dans ma base MySQL dont chaque ligne indique un identifiant d'événement et le pourcentage effectué.
Lorsque la page de départ est chargée, je fais plusieurs appels Ajax :
- 1. Le premier permet de créer une nouvelle entrée de la table "traitements" dans la base. Une fois l'appel terminé, je lance deux autres appels Ajax :
- 2.1. Un appel vers le script traitement.php , qui dure plusieurs minutes.
- 2.2. Un appel répété, toutes les secondes, vers un script léger permettant de récupérer le pourcentage effectué pour ce traitement, afin de remplir la barre de chargement en conséquence.
Dans mon script traitement.php, je fais des UPDATE réguliers sur la table "traitements", ce qui fait qu'en principe la barre de progression se remplit au fur et à mesure du traitement.
Et maintenant, mon problème : les appels 2.1 et 2.2 sont bloqués. Pour empêcher la concurrence d'accès, j'ai utilisé LOCK avant la mise à jour de la table pendant le script traitement.php . Est-ce que je l'ai mal utilisé, ou alors le problème vient d'ailleurs ?
1 2 3 4 5 6
| $requete='LOCK TABLES chargements READ';
mysql_query($requete);
$requete='UPDATE traitements SET pct='.$nouvelle_valeur.' WHERE ID='.$this->id_chargement;
mysql_query($requete);
$requete='UNLOCK TABLES';
mysql_query($requete); |
Merci d'avance si vous pouvez m'aider !
Partager