среда, предварительное условие
Существует простое действие.
маршрутизация: demo_home_index
indexAction()
{
sleep(60);
return // ...
}
И есть действие, по которому считывается файл.
маршрутизация: demo_home_read
public function readAction()
{
$file = "/path/to/file/read.txt";
$contents = false;
if (file_exists($file)) {
$fp = fopen($file, 'r');
$contents = fgets($fp);
fclose($fp);
}
return new Response(json_encode(array(
'contents' => $contents,
)));
}
Итак, сначала из UI, асинхронности, я обращаюсь к indexAction. В то же время он обрабатывает то, что является функцией интервалов чтения файла.
$.ajax({
url : Routing.generate("demo_home_index"),
type : "GET",
dataType : 'json'
})
.done(function(response){
// This isn't returning for 60 seconds for a sleep.
console.log(response);
});
var timer = setInterval(function(){
$.ajax({
url : Routing.generate("demo_home_read"),
type : "GET",
dataType : 'json'
})
.done(function(response){
console.log(response);
});
}, 3000);
На этот раз интервал доступа приостанавливается, когда выполняется первый доступ. Таким образом, когда первый доступ завершен, другой доступ также завершается последовательно.
Это происходит и при нормальном доступе. (не асинхронно) Хотя indexAction (sleep) обрабатывается, даже если я получаю доступ к другому действию (другой странице) в браузере вкладок, он останавливается. (Браузер будет состоянием загрузки)
Не останавливаясь, он способен обрабатывать одновременно?
Возможно ли изменить настройку брандмауэров Symfony2?
Или, возможно ли изменить настройку FOSUserBundle?
Я нахожусь в состоянии, которое сейчас не знает причины.
Спасибо.
Вероятно, это проблема с файлами сеансов на основе файлов. В основном, управление сеансом PHP блокирует файл сеанса, а следующие запросы (в том же сеансе) должны ждать, пока блокировка не будет выпущена.