【发布时间】:2013-01-08 07:36:26
【问题描述】:
我有一个基于this one 的php websocket 服务器。这个 websocket 服务器在与公共 web 服务器不同的 apache 上运行,但在同一个物理服务器上,所以我需要一个数据库连接来检索用户数据。用户数据由当前会话 id 获取,当用户登录时,该会话 id 也会在数据库中更新。现在,如果我运行我的 websocket 服务器,它可以完美运行,但经过一段不错的时间(不能说时间跨度),结果仍然为空.我检查了数据集。
查询字符串是最新的,并且正确的会话 ID 在数据库中,它应该返回所需的行,但结果保持为空。如果我杀死进程并运行这个 websocket 服务器,它会暂时工作,但过一段时间结果又是空的。
这是我的 websocketserver.php 简化版:
set_time_limit(0);
require 'class.PHPWebSocket.php';
$db1 = mysql_connect( 'localhost', 'dev', 'xxxxxxxx' );
mysql_select_db('cb_dev',$db1);
function wsOnMessage($clientID, $message, $messageLength, $binary) {
global $Server;
$sessionid = "/*just imagine a session id here*/";
$result = mysql_query("SELECT username, id FROM users WHERE sessionid = '$sessionid'");
$row = mysql_fetch_row($result);
}
function wsOnOpen($clientID) {
//
}
function wsOnClose($clientID, $status) {
//
}
$Server = new PHPWebSocket();
$Server->bind('message', 'wsOnMessage');
$Server->bind('open', 'wsOnOpen');
$Server->bind('close', 'wsOnClose');
$Server->wsStartServer('0.0.0.0', 9010);
注意:使用的会话 ID 正确提供,所以这不是问题。
【问题讨论】:
-
能否贴出用户登录时更新会话ID的代码?