【发布时间】:2016-04-23 12:51:50
【问题描述】:
我知道 PHP 在脚本结束时会自动关闭打开的 MySQL 连接,打开持久连接的唯一可行方法是使用适当的 PHP 函数;已经提出并回答了许多问题。
我想知道的是保持临时连接而不是持久连接的好处(或不方便)
编辑:
每个 PHP 用户会话的持久连接。
例如,如下语句:
session_start();
$connection = new mysqli($host, $user, $pass, $db);
$_SESSION['connection'] = $connection;
可能会设置对 mysqli 对象的引用,该对象对同一用户在同一会话内跨网站导航执行多个查询很有用。
如果连接应该在激活后立即使用,那么让它保持打开以供进一步查询不是正确的选择吗?当多个用户从一个保持 MySQL 连接的网站请求 HTTP 页面时,这种方法可能会产生不方便的情况(以及可能的安全风险)?
我想知道更多。谢谢。
【问题讨论】:
-
我也想知道这将如何影响性能和安全性:),赞成这个问题
-
每个请求对于 PHP 来说都是一个新的生命周期,它没有像你在其他地方可能得到的持久状态。如果您要为多个请求/用户使用相同的连接,那么您可能会看到竞争条件(哪个查询首先完成),获取“最后插入的 id”可能会给您另一个用户插入的 id,等等
-
无法序列化(保存 mysqli 连接)到会话,因此示例代码无法按预期工作。