session_set_save_handler wamp崩溃

时间:2010-06-22 11:30:21

标签: php mysql session wamp

我正在尝试使用session_set_save_handler来允许我使用下面的代码在mySQL数据库中保存会话。

每当我尝试加载页面时,我都会收到有关httpd.exe的应用程序错误,如下图所示。

http://i48.tinypic.com/2i9l2ip.jpg

如果我删除以下行,页面工作正常。

session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");

我猜这意味着我的代码中某处出现了错误但我看不到任何内容。非常感谢任何帮助,谢谢。

function sess_open($sess_path, $sess_name) {
 return true;
}

function sess_close() {
 return true;
}

function sess_read($sess_id) {
 $result = dbQuery("SELECT data FROM sessions WHERE id = '$sess_id';");
 if (!mysqli_num_rows($result)) {
 $CurrentTime = time();
 $result = dbQuery("INSERT INTO sessions (id, access) VALUES ('$sess_id', '$CurrentTime');");
 return '';
 } else {
 extract(mysqli_fetch_array($result), EXTR_PREFIX_ALL, 'sess');
 $result = dbQuery("UPDATE sessions SET access = '$CurrentTime' WHERE id = '$sess_id';");
 return $sess_data;
 }
}

function sess_write($sess_id, $data) {
 $CurrentTime = time();
 $result = dbQuery("UPDATE sessions SET data = '$data', access = '$CurrentTime' WHERE id = '$sess_id';");
 return true;
}

function sess_destroy($sess_id) {
 $result = dbQuery("DELETE FROM sessions WHERE id = '$sess_id';");
 return true;
}

function sess_gc($sess_maxlifetime) {
 $CurrentTime = time();
 $result = dbQuery("DELETE FROM sessions WHERE access + $sess_maxlifetime < $CurrentTime;");
 return true;
}

session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
session_start();

1 个答案:

答案 0 :(得分:0)

这是httpd中的错误,而不是代码中的错误。或者说,它确实是由您的代码引起的,但是apache应该永远不会崩溃(你应该得到PHP错误,而这里只是崩溃了服务器)。尝试更新wamp,或尝试安装xampp并检查是否可以获得更有意义的错误。