如何在Symfony2中终止会话?

tyl*_*ism 5 symfony

似乎Symfony2在请求后正在等待AJAX​​响应.在响应返回之前,它不会转到同一页面上的其他链接.

本文介绍了该问题:http: //garethmccumskey.blogspot.com/2009/10/php-session-write-locking-and-how-to.html

我找不到Symfony2中的解决方案.

Mat*_*att 14

在阅读了你所指的博客文章并阅读了这些SessionNativeSessionStorage类的代码后,我试图模仿博客文章中提到的行为是这样做的:

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

// Change the session attributes

$session->save();
session_write_close();

// Do database calls and other stuff.
Run Code Online (Sandbox Code Playgroud)

我没有测试它,但它应该按预期工作.您的问题的另一个解决方案NativeSessionStorage是使用与默认使用的会话存储不同的会话存储.您可以使用该PdoSessionStorage对象使用例如数据库存储.这可以防止PHP使用锁.有关如何使用数据库存储进行会话的详细信息,请参阅此cookbook条目.

但是,如果数据库系统访问同一行,则无法保证数据库系统不会堆叠多个请求,但它应该比使用NativeSessionStorage.

问候,
马特

  • 你可以省略session_write_close(); 因为会话服务save()方法会调用NativeSessionStorage的save()方法而且它有session_write_close(); 已经.http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.html#method_save (5认同)