2016-12-01 81 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