php / symfony专家!
这个问题特别适合你。
试试这个代码示例
/**
* @Route("/your-route", name="your-route")
*/
public function indexAction()
{
$this->get('session')->save();
sleep(10);
return $this->render('template.html.twig');
}
请求在预期的不同浏览器中并行执行,但为什么要在同一个浏览器中按顺序执行?
答案 0 :(得分:0)
不同的浏览器会启动不同的会话,因此没有会话锁定,但是一个浏览器的不同选项卡会尝试打开同一个会话。
这就是您将会话锁定作为默认行为的原因。
执行$session->save()
时 - 您调用session_write_close()
功能并将会话保存在其文件中。默认情况下,Symfony从您的php.ini重新定义session.save_path
值。
所以看来你需要检查路径上的权限" / your_project_path / app /../ var / sessions / dev" 请参阅此问题:Warning: session_write_close(): Failed to write session data.... #17845。
答案 1 :(得分:0)
如果Web服务器支持多个并行请求,则您的代码应并行执行。
通常,当先前的请求仍在打开会话存储的情况下运行时,随后的请求调用session_open()
尝试访问同一会话时,执行将停止,直到先前的请求结束或使用{{1 }}。
您正在调用的session_write_close()
方法可以做到这一点,因此您的代码是正确的。
我遇到了同样的问题,然后我意识到我正在使用php内置Web服务器,该服务器可以一次处理一个请求。