Меня это тоже укусило. Я исправил это благодаря информации, предоставленной в stackoverflow.
У меня было две страницы, на обеих было «session_start ()» вверху, а первая вызывала вторую с помощью curl, чтобы я мог POST-переменные ко второму сценарию после проверки. Веб-сервер зависал, пока я не добавил "session_write_close ()".
Пример кода:
// 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();