session_write_close symfony 2和3

时间:2017-07-01 16:39:13

标签: php symfony

php / symfony专家!

这个问题特别适合你。

试试这个代码示例

/**
 * @Route("/your-route", name="your-route")
 */
public function indexAction()
{

    $this->get('session')->save();

    sleep(10);

    return $this->render('template.html.twig');
}

请求在预期的不同浏览器中并行执行,但为什么要在同一个浏览器中按顺序执行?

2 个答案:

答案 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服务器,该服务器可以一次处理一个请求。

相关问题