Sto provando a servire due richieste quasi simultanee provenienti dalla stessa sessione del browser.Le sessioni PHP stanno bloccando, ignorando session_write_close
consideri il seguente esempio minimo:
<?php
session_start();
$sessionId = session_id();
session_write_close();
$file = sys_get_temp_dir() . '/lock_test';
if (!file_exists($file)) {
touch($file);
sleep(5);
unlink($file);
echo 'done! ' . $sessionId;
} else {
echo 'locked! ' . $sessionId;
}
La seconda richiesta dovrebbe comportare l'uscita "bloccato" ma attende sempre per la prima richiesta per completare e poi uscite "fatto".
Xdebug non è in esecuzione. La versione di PHP è 5.5.
Edit:
Le votazioni per chiudere questo come un duplicato. La domanda collegata suggerisce che per aggirare questo problema, aggiungere una variabile casuale. Quindi suggerirei di aggiungere una variabile RequestTime e impostarla su un timestamp con microsecondi.
Come stai facendo dette richieste? – PeeHaa
Colpire lo script da un browser. Presumibilmente questo metodo può essere usato per facilitare più richieste di ajax senza che si blocchino l'un l'altro per tutto il tempo in cui lo farebbero senza di esso. – bcmcfc
Hai provato a rimuovere il file I/O (lasciando solo inizio sessione/chiusura sleep ed echo)? – Vatev