我为我的公司写了一个门户网站,里面有几十个ajax调用。对于每个ajax调用,目标脚本使用mysql和会话变量。在我做的每一个脚本上:
page.php文件
$.ajax({
type:"POST",
data:someData,
url:target.php,
success:function(result){
someAction
}
});
target.php
<?php
session_start();
//target from ajax.php
require_once('/var/www/lib/db.php');
......
......
$_SESSION['someVar'] = $someMysqlResult;
db.php中
$db = new PDO('mysql:host=localhost;dbname=someDB', 'someUser', 'somePassword');
所以我设置了几十次新的mysql连接。有没有更好的办法?我可以在所有这些ajax调用中携带一个mysql资源吗?
我也开始了几十次会议。有没有更好的方法在目标脚本上再次打开会话?
答案 0 :(得分:0)
根据documentation,您可以使用持久连接:
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
PDO::ATTR_PERSISTENT => true
));
许多Web应用程序将从与数据库服务器的持久连接中受益。持久连接不会在脚本末尾关闭,而是在另一个脚本使用相同凭据请求连接时进行高速缓存和重新使用。持久连接缓存允许您避免每次脚本需要与数据库通信时建立新连接的开销,从而使Web应用程序更快。
你应该知道这样做虽然有一些消极的缺点需要注意:What are the disadvantages of using persistent connection in PDO