これに基づいたphp websocketサーバーがあります。この Websocket サーバーは、パブリック Web サーバーとは異なる apache で実行されますが、同じ物理サーバー上で実行されるため、ユーザーデータを取得するにはデータベース接続が必要です。ユーザーデータは、ユーザーがログインしたときにデータベースでも更新される現在のセッション 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 は正しく提供されるため、これは問題ではありません。