【问题标题】:Passing mySQL Link Identifier in a Session Variable在会话变量中传递 mySQL 链接标识符
【发布时间】:2012-04-07 13:14:47
【问题描述】:

我的项目中有一个情况,我必须继续使用大量 SQL 查询。我在这里有两个问题,一个是,一旦创建了与数据库的连接,它是否会在我的所有网页中保持持久性?即,我的客户端始终与 mySQL 服务器保持连接。如果是,那么将我的 mySQL 链接标识符保存为会话变量是否是一个安全的选择,即,

$_SESSION['link'] = $link //( $link is mysql link identifier )

因此在我的网页中使用这个变量,因此只有一个与数据库的连接。我无法使用

mysql_pconnect().

我的第二个问题是,是否可以一次又一次地保持与数据库的连接和断开连接。这是一个好习惯吗?我正在使用 mySQL 服务器,但对它的访问权限有限。

【问题讨论】:

  • 我不会在会话中存储对数据库的引用。您是否使用任何类型的框架?如果没有,您可能需要考虑使用Singleton pattern
  • 更好的参考:The Singleton Pattern

标签: php mysql security session-cookies


【解决方案1】:

我的意见是,当您尝试将$link 存储到会话时,您不会保存或赢得任何东西。

您必须为每个页面数据加载连接到 sql server。与包含文件相同。如果此变量存储在会话中或没有带来相同的效果 - 最终计算的内存成本相同。

现在必须 - 在您加载页面后节目结束:) 连接丢失,只剩下您的会话内容。 ((是的,它取决于您的虚拟主机设置是自动关闭数据库连接还是在某个时间段内关闭,或者等待您使用命令完成。最后一个是节省资源的最佳选择))

您应该开始考虑将加载的 contnet 存储到会话或文件中。然后,您可以保存来自外部资源的连接和数据负载,这可能是您的基本想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    相关资源
    最近更新 更多