【问题标题】:session_set_save_handler wamp crashsession_set_save_handler wamp 崩溃
【发布时间】:2010-06-22 11:30:21
【问题描述】:

我正在尝试使用 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();

【问题讨论】:

    标签: php mysql session wamp


    【解决方案1】:

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

    【讨论】:

    • 谢谢,我已经安装了 XAMPP,它马上就可以工作了!!!不确定 WAMP 的问题是什么,但从现在开始会坚持使用 XAMPP。似乎运行得更快,因为我一直发现 WAMP 有点慢,尤其是在使用 mySQL 连接时,不确定这是否只是我的设置。
    • 发现这些服务的问题很常见。我一直使用它们进行开发,但是如果您希望在 Windows 上进行真正的 PHP 设置,您可能应该求助于 IIS,它在较新的版本(IIS7 以上)上有一个(相当不错的)PHP 托管设施。或者,你应该安装一个带有 linux 的虚拟机。
    • 顺便说一句:如果这个答案有帮助,你应该接受它(点击左边的 V 符号)或至少投票(按向上箭头)。这是说“谢谢”并表示您的问题已得到解答的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 2011-11-22
    相关资源
    最近更新 更多