【发布时间】:2010-09-21 13:45:24
【问题描述】:
我对 Zend 处理会话的方式几乎感到沮丧。
这是我的情况。我编写了一个身份验证插件,该插件始终检查用户凭据是否使用 Zend_Auth。当从 zend auth 调用 hasIdentity 函数时,它会自动启动会话。
当我需要执行一个很长的过程时,问题就来了。会话将锁定请求,直到请求完成。我尝试通过调用 Zend_Session::writeClose(false) 来释放锁,因此可以执行另一个请求。 但我无法再次开始会议。
如果我尝试恢复已停止的会话,这是一个糟糕的实现吗?
从开始到请求执行结束只有一个会话?
谢谢。
ps:我可以在这里做一些小技巧。在 auth 插件结束时,我编写了一个原生 php 函数 (session_write_close),如果任何控制器需要再次使用会话,我将使用 (session_start) 再次启动它。
【问题讨论】:
-
您是否锁定了请求?还是采埃孚自己做的?
-
当我从 zend auth 类调用 hasIdentity() 时,ZF 会自动调用 session_start。 session_start 将锁定会话数据,直到脚本完成。
-
¿你有没有找到一个“好的解决方案”?我遇到了同样的问题。
-
我认为唯一的“其他”解决方案是使用“非锁定”会话处理程序(数据库?Memcache?)
-
在引导文件中试试这个 register_shutdown_function(array('Zend_Session', 'writeClose'), true);
标签: php zend-framework session zend-auth zend-session