2016-12-01 33 views
0

我为我的公司写了一个门户,里面有数十个Ajax调用。对于每个Ajax调用,目标脚本都使用mysql和会话变量。对这些脚本的每一个我做的:带有mysql和会话变量的多个Ajax调用

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

按照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