我在Cakephp中处理会话时遇到问题。我提出两个请求。第一个请求提交表单,发生了很多事情。第二个请求是一个想要了解第一个请求状态的ajax请求。 因此,我将状态写入会话变量。我谷歌很多,我知道我可能会得到每个ajax-status-request的有效回报。问题是,会话中的变量始终是之前请求的最后一个状态。这是一个例子:
第一次提交
Ajax-Status-Request 1:status 1
Ajax-Status-Request 2:status 1
...
Ajax-Status-Request 10:状态1
结束(状态应为10)
第二次提交
Ajax-Status-Request 1:status 10
Ajax-Status-Request 2:status 10
...
Ajax-Status-Request 10:状态10
结束(状态应为10)
在cakephp中我尝试配置'php'和'cake'。但是,如果我使用此配置,则每个ajax-request都在等待提交完成。现在我尝试了“缓存”。
Configure::write('Session', array(
'defaults' => 'cache'
));
表单提交的控制器
$this->Session->write('request_status', "start");
sleep(5);
for($i =1;$i<500000;$i++){
if($i == 1000){
$this->Session->write('request_status', $this->Session->read('request_status').$i);
}
if($i == 7000){
$this->Session->write('request_status', $this->Session->read('request_status').$i);
}
}
$this->Session->write('request_status', "ende");
Ajax的状态请求
public function checkRequestStatus(){
$this->respond($this->Session->read('request_status'), true);
}
Ajax的代码的
$.ajax({
type: "POST",
url:"<?php echo Router::url(array('controller'=>'AjaxRequestStatus','action'=> 'checkRequestStatus', 'plugin' => ''));?>",
async: false,
success: function(data){
$('#popup_content').append(data+ "<br />");
}
});
好的,我希望其他人也可以创建多个请求,并希望了解第一个请求的状态。我的错是什么?这是配置问题吗?
格尔茨
V