【发布时间】:2011-08-10 13:16:42
【问题描述】:
我现在有一个彗星页面,如果我在顶部调用session_start,那么会话会冻结,我的解决方法是:
function getTables($sessionID = null){
if(!isset($this->output)){
$this->output = array();
}
if(!isset($this->output[$this->sessID])){
$this->output[$this->sessID] = array();
}
$hostname = php_uname("n");
$sess_ini = session_save_path();
chdir($sess_ini);
if(false === ($save = @file_get_contents("sess_$this->sessID"))){
$cwd = getcwd();
chdir($this->location);
return (isset($this->returnJSON[$this->sessID])?$this->returnJSON[$this->sessID]
:json_encode(array(
'sess_local'=>"$sess_ini/sess_$this->sessID",
'save'=>$save,
'hostname'=>$hostname,
'cwd'=>$cwd,
'reg_local'=>$this->location,
)
)
);
}
chdir($this->location);
//session_id($sessionID);
$sessions = explode("|",$save);
$_SESSION['all'] = array();
foreach($sessions as $key=>$sess){
if(trim($sess)=='all' && isset($sessions[$key+1])){
$_SESSION['all'] = unserialize(trim(urldecode($sessions[$key+1])));
break;
}
}
...
有没有更好的方法让我不进入会话文件的会话变量?
【问题讨论】:
-
我认为你需要解决并解决根本问题(为什么
session_start()会让事情冻结) -
@James C 那是我的上一个问题......它通过从彗星无限帧中删除 session_start 来解决 -- stackoverflow.com/questions/5553830/…
-
@James,这是因为 php 存在两个具有相同 ID 的会话的限制