我对Zend处理会话的方式几乎感到沮丧。
这是我的情况。我写了一个auth插件,总是检查用户凭据使用Zend_Auth。当从zend auth调用hasIdentity函数时,它将自动启动会话。
当我有一个需要执行的漫长过程时问题就来了。会话将锁定请求,直到请求完成。我尝试通过调用Zend_Session :: writeClose(false)来释放锁,因此可以执行另一个请求。 但我无法再次开始会议。
如果我尝试恢复停止会话,这是一个糟糕的实现吗?
从开始到请求执行结束只有一个会话?
感谢。
ps:我可以在这里做一点点破解。在auth插件结束时,我编写了一个原生的php函数(session_write_close),如果任何控制器需要再次使用session,我再次使用(session_start)启动它。
答案 0 :(得分:1)
解决此问题的最简单方法是使用数据库进行会话存储。无需担心文件锁(如ArneRie所说)。
使用常见的PHP扩展和对php.ini的微调:
您可以将它们存储在NFS导出中,或者使用SQL后端重新编码session_set_save_handler。但是,与使用memcached相比,没有更高效,更具可扩展性,更高性能和更易于部署的解决方案...
教程:http://www.dotdeb.org/2008/08/25/storing-your-php-sessions-using-memcached/
Zend方式,通过Zend_Session_SaveHandler_DbTable。