【发布时间】:2014-04-30 11:20:13
【问题描述】:
我在使用Yii::app()->user 时遇到了一个奇怪的问题,如果我从一种方法调用它,我几乎无法运行任何东西,直到脚本运行结束。例如,假设我有以下方法:
public function actionFoo(){
Yii::app()->user; //just for the example, I know it doesn't mean anything
sleep(30); //just so it won't finish right away
echo "end of function Foo";
}
现在,如果我调用与actionFoo 相关的URL,然后在第一个选项卡完成之前尝试从另一个选项卡调用不同的URL 之后,会发生以下情况:
- 如果我输入了属于同一项目的无效
URL,我将在actionFoo结束之前收到回复,这意味着我不会收到404 Bad Request。 - 如果我输入了一个有效的
URL,它与也使用Yii::app()->user的方法相关 - 与#1 中的相同。 - 如果我输入一个有效的
URL,它与不使用Yii::app()->user的方法相关 - 一切似乎都正常。
希望一切都清楚,如果没有,请随时询问。
【问题讨论】:
-
访问
Yii::app()->user会打开会话。如果您的会话存储在文件中,the second script will get stuck on that line and wait until the first one ends.