1 - Nel trattarsi l'aggiornamento con le domande di SQL, verifica l'effetto di
INSERIRE IL *** SUL *** DELL'AGGIORNAMENTO DUPLICATA DI CHIAVE
Cf
http://dev.mysql.com/doc/refman/5.0/fr/insert.html2 - Poiché state trattando paralelamente $_SESSION e le copie di sql dei dati di sessione, potreste studiare la possibilità di immagazzinare l'identificazione di sql nei dati di $_SESSION
Quando state facendo il primo scrivete l'inserto?
$_SESSION è in alcuni casi aggiornato solo dopo che la pagina è lasciata…
3 - Sembra che realmente stiate giocando in una zona pericolosa dove la sincronizzazione precisa realmente non è garantita e dove dovreste quindi prevedere i lotti delle difficoltà.
Proverei a riconsiderare ed aggiornare i dati di sessione soltanto su alcuni eventi significativi, di modo che tutta la domanda nascosta di SQL ha avuta certo tempo di eseguire. Il vostro sistema allora sarebbe più robusto ed il carico sull'assistente inoltre cadrebbe significativamente.
O avere qualche $_SESSION tenere il timestamp di ultimo aggiornamento ed aggiornare solo dopo 2 secondi
Sure, non molto Ajax-come ma hey, questo dipende dal vostro assistente di SQL e dallo sforzo che lo mettete sopra. I microsecondi o persino gli aggiornamenti di centi-secondi o del milli- sono benissimo per Ajax, ma non per l'assistente di SQL