我有一個基於this one的php websocket服務器。這個websocket服務器運行在與公共web服務器不同的apache上,但在相同的物理服務器上運行,所以我需要一個數據庫連接來檢索userdata。用戶數據由當前會話ID獲取,當用戶登錄時,該數據也會在數據庫中更新。現在,如果我運行我的websocket服務器,它的工作原理是完美的,但經過一段合適的時間(不能說時間跨度),結果保持空。我檢查了數據集。PHP websocket服務器和mysql連接
查詢字符串是最新的,正確的會話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是正確投放,因此這不是問題。
2013-01-08
QQping
+0
你可以張貼在更新會話ID的用戶loggs時的代碼? –