Zend Auth锁定了会话

时间:2010-09-21 13:45:25

标签: php zend-framework session zend-auth zend-session

我对Zend处理会话的方式几乎感到沮丧。

这是我的情况。我写了一个auth插件,总是检查用户凭据使用Zend_Auth。当从zend auth调用hasIdentity函数时,它将自动启动会话。

当我有一个需要执行的漫长过程时问题就来了。会话将锁定请求,直到请求完成。我尝试通过调用Zend_Session :: writeClose(false)来释放锁,因此可以执行另一个请求。 但我无法再次开始会议。

如果我尝试恢复停止会话,这是一个糟糕的实现吗?

从开始到请求执行结束只有一个会话?

感谢。

ps:我可以在这里做一点点破解。在auth插件结束时,我编写了一个原生的php函数(session_write_close),如果任何控制器需要再次使用session,我再次使用(session_start)启动它。

1 个答案:

答案 0 :(得分:1)

解决此问题的最简单方法是使用数据库进行会话存储。无需担心文件锁(如ArneRie所说)。

选项1

使用常见的PHP扩展和对php.ini的微调:

  

您可以将它们存储在NFS导出中,或者使用SQL后端重新编码session_set_save_handler。但是,与使用memcached相比,没有更高效,更具可扩展性,更高性能和更易于部署的解决方案...

教程:http://www.dotdeb.org/2008/08/25/storing-your-php-sessions-using-memcached/

选项2

Zend方式,通过Zend_Session_SaveHandler_DbTable。

实施例: Zend - Storing Session data in a database