Eşzamanlı AJAX İstekler ve PHP Oturumları

0 Cevap php

Ben oturumda saklanan bir PHP nesneyi değiştirmek eşzamanlı AJAX istekleri yapma ile tuhaf bir sorun yaşıyorum. Ben yarış koşulları ile ilgili sorunlar yaşıyorum ama onlar oluyor konum neden ben anlamıyorum ... sadece bir AJAX çağrısı bir anda açık oturumu var, bu yüzden olabilir olmamalıdır her değişiklik yaparken onlar açık oturum tutarsanız başkaları tarafından yapılan değişiklikleri görmek mümkün olacak diyorsun? İşte akış (A ve B parametreleri iki takım) basitleştirilmiş bir versiyonu:

1) An AJAX call is made which runs Initiate(A). This call opens the session. It updates the PHP object by adding "A - Running" to an array.
2) An AJAX call to Run(A) is made. It waits until Initiate(A) closes the session and then runs. It briefly opens the session but explicitly closes it and does not modify the object. Run(A) will take up to 60 seconds to run.
3) Another AJAX call is made which runs Initiate(B). This opens the session and modifies the object by adding "B - Running" to the array.
4) Another AJAX call is made to Run(B). It opens the session briefly but explicitly closes it.

Şimdiye kadar, her şey harika. Run (A) ve Run (B) yürütme hem de. Her ikisi de "A - Koşu" ve "B - Running" Ya isteği açık değil oturumda saklanan nesnenin dizi bulunmaktadır. Komik şeyler olsun İşte burada:

5) Run(A) finishes executing first and an AJAX call is made which runs Show(A). This opens the session, retrieves the object, and changes "A - Running" to "A - Complete". Funny thing is, "Running - B" is not there at all.
6) When Run(B) finishes, an AJAX call is made that executes Show(B). This opens the session and retrieves the object. It changes "B - Running" to "B - Complete". The first element in the array, however, is "A - Running".

Oturum kapatıldı ve kaydedilmiş ise, göster (A) açtığında, neden (B) başlatın tarafından yapılan değişiklikleri göremiyorum? Ve ne zaman (B) başlatın açıkça (A) başlatın tarafından yapılan değişiklikleri görebilirsiniz, ama Show (B) Show (A) ne yaptığını göremiyorum ...

Run (B) Run (A) önce bitmiş, benzer sorunlar olur.

0 Cevap