Ben arayarak iki PHP komut, aynı oturumu kullanarak hem de sahip session_name('MySessID')
.
Ilk komut kıvırmak kullanarak ikinci komut çağırdığında, ikinci komut session_start()
çağrıldığında askıda kalıyor.
Neden bu happend istiyorsunuz?
Bu durumda neden ben tamamen anlamıyorum, ama çözüldü aldım.
Bu bug yaşıyorum aynı sorunu açıklar. Ben bir komut görünüşte PHP tezgahları başka bir komut dosyası, both using the same session, gönderme var.
Yani bütün kıvırmak sonrası senaryoyu yapmadan önce, ben session_commit
işlevini çağırın, bu yüzden çağıran komut oturumunu sonlandırmadan ve oturumu yeniden denilen komut etkinleştirme.
Patlat ...
Php manuel
http://php.net/manual/en/function.session-write-close.php
Script session_write_close (aramaya gerek kalmadan sonlandırıldı sonra oturum verileri genellikle) saklanır, but as session data is locked to prevent concurrent writes only one script may operate on a session at any time. Oturumları ile framesets birlikte kullanıldığında nedeniyle bu kilitleme teker teker yükleme çerçeveleri yaşayacaksınız. Size en kısa sürede oturum değişkenleri tüm değişiklikler yapılır gibi oturumu sona tüm kareleri yüklemek için gereken zamanı azaltabilir.
So you can not have 2 scripts use the same session att the same time.
Ben de bu tarafından ısırıldı. Ben bunu stackoverflow sağlanan bilgi sayesinde giderildi.
Ben de "session_start ()" üst ve ilk curl ile ikinci çağırıyordu öylesine ben doğrulama sonra ikinci komut dosyasına değişkenler POST olabilir vardı, iki sayfa vardı. Ben "session_write_close ()" katma kadar web sunucusu asılı idi.
Kod örneği şöyle:
// IMPORTANT (OR ELSE INFINITE LOOP) - close current sessions or the next page will wait FOREVER for a write lock.
session_write_close();
// We can't use GET because we can't display the password in the URL.
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$url = "http://$host$uri/formPage2.php?";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url); //append URL
curl_setopt($ch, CURLOPT_POST,TRUE);//We are using method POST
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_REQUEST, '', "&"));//append parameters
curl_exec($ch); // results will be outputted to the browser directly
curl_close($ch);
exit();