【发布时间】:2015-12-14 18:35:51
【问题描述】:
我经营一个游戏论坛和相关的游戏服务器。在过去的 2 年里,用户在论坛上注册,他们的名字/密码然后传递到我的游戏服务器数据库。一旦他们完成注册,就会发出另一个调用,翻转游戏数据库中的一个标志以允许他们玩。
在某些时候,这个过程停止工作,所有新的论坛帐户(phpbb 论坛)根本就没有进入我的游戏 SQL 服务器。我在我的游戏服务器上打开了我的 SQL 监视器,并且从未使用已传递的凭据建立连接。创建新帐户时,我也没有列出任何错误。代码如下:
// Create game account
try {
$acctConnection = new PDO('mysql:dbname=DB_Redacted;host=x.x.x.x;port=33306;charset=utf8','DB_forum','PasswordHere', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$acctStmt = $acctConnection->prepare('CALL forum_link(?,?)');
$acctStmt->bindParam(1, $newname);
$acctStmt->bindParam(2, $plainpassword);
$acctStmt->execute();
$acctConnection = NULL;
} catch (PDOException $e) {
echo 'Creating game account failed';
}
forum_link 是用于将值插入游戏数据库的存储过程。该帐户还设置为仅接受来自我的专用 IP 论坛主机的连接,该 IP 没有更改,并且还能够运行列出的存储过程。游戏服务器正在侦听列出的端口,我什至在没有运行防火墙的情况下进行了测试。我对此相当陌生,因为该过程是由另一个不再从事该项目的开发人员设置的,但似乎在很长一段时间内都没有失败。有什么想法可能是错误的和/或我如何获得更强大的日志记录以发现问题可能是什么?
【问题讨论】:
-
查看错误日志。
-
很遗憾,没有任何记录。我正在考虑退出此部分并仅测试连接性,但我担心现有的日志记录不正确或由于某种原因未显示。
-
一切都会被记录下来,除非设置你的服务器的人是个笨蛋。
-
为什么这个标签是 sql-server?另外,您可以发布存储过程代码吗?尝试在您的 MySQL 控制台中测试 SP。另外,
try/catch中是否出现 PDO 异常? -
SP 工作正常,我可以从我的游戏服务器运行它来手动添加帐户。该帖子被标记为 SQL,因为我觉得这可能是 SQL 到 SQL 的连接问题,但我希望通过找到某种方法来捕获错误(如果有的话)会被抛出。我不熟悉 try/catch,它是如何工作的和/或它是如何实现的?