从PHP代码发出MySQL / SQL查询时,必须首先建立与数据库的连接。
请问我是否我是否应该仅在用户的网络会话开始时,或者在加载新页面时,或者在每个MySQL / SQL查询之前建立与数据库的连接?
我认为在不必要地与数据库建立连接太多次时,我将消耗不必要的系统资源。因此,我希望在最短的时间内连接数据库。
答案 0 :(得分:2)
当必须时,您应始终连接数据库。想象一下谷歌或其他机器人会在几秒钟内访问您的应用程序。可能有时候您的所有内容都将从缓存系统中传送出去。
此外,由于上下文切换,重新打开数据库连接将直接花费您等待您的用户并消耗更多内存。您应该在需要时连接数据库,而不必关闭它,因为当脚本执行结束时,您的数据库连接将自动结束。
答案 1 :(得分:1)
您应该在页面加载时连接到数据库。
要最大限度地减少连接时间开销,请使用persistent connections.
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass,
array(PDO::ATTR_PERSISTENT => true));
?>
答案 2 :(得分:1)
如果你没有打开持久连接(是吗?),那么当脚本自动结束时(即每个页面),连接就会关闭。
并且,打开连接的执行不会消耗资源(好吧,确实如此,但是在很短的时间内)。保持开放连接确实。
答案 3 :(得分:1)
你需要达到适当的平衡。每个部分都有其问题。让我们回顾所有三种可能性
持久的MySQL连接
优点:加载一次忘记
缺点:您需要确保自己杀死任何不活动的连接。此外,休眠连接仍然使用一些资源。不推荐,因为唯一的好例子是很多请求,此时你很可能想要集中你的数据库服务器,持久连接往往会对此造成严重破坏。
一个查询一个请求模型
优点:构建并忘记
缺点:极端资源使用。
良好的解决方案是正确的平衡。第一次实际需要时加载DBH,并保持它直到脚本结束,此时你应该释放它使用的所有资源并终止它。这可以保证您使用所需的最少资源完成所有工作。