2016-11-23 22 views
3

最新のSQL 13ドライバと最新のsqlsrvおよびsqlsrv_pdo PHP拡張機能がインストールされました。接続プーリングが機能していないようです。接続プールがSQL Server for LinuxのODBCドライバ13で動作しない

  • OS:CentOSの7.2
  • PHP:PHP 7.0.12
  • SQLドライバ:テストのSQL ServerのODBCドライバー13

概要:私たちが接続するテストスクリプトを作成しましたDB。スクリプトの実行後、接続は閉じられ、DBによって確認されます。

ODBCINST.INI:スクリプトの

$startTime = microtime(true); 
function printElapsedTimeSinceLastEvent($event=''){ 
    global $startTime; 
    $elapsed = microtime(true) - $startTime; 
    echo $event . round($elapsed*1000) ."\n"; 
    $startTime = microtime(true); 
} 

// Connection sqlsrv driver 
$pdo = new PDO ("sqlsrv:server=10.12.12.123;database=aDatabaseName",'coolUser','someAwesomePassword'); 
printElapsedTimeSinceLastEvent("Connected: "); 
$stmt = $pdo->prepare("SELECT TOP 10 * FROM users"); 
$stmt->execute(); 
printElapsedTimeSinceLastEvent("Execute: "); 
$array = $stmt->fetchAll(PDO::FETCH_ASSOC); 
printElapsedTimeSinceLastEvent("Fetch: "); 

3つの連続出力:

Connected: 149 
Execute: 109 
Fetch: 2 

Connected: 149 
Execute: 100 
Fetch: 2 

Connected: 152 
Execute: 108 
Fetch: 2 

SQL Studioとランニングを使用して、いくつかのタイミング(MS)を含む

[ODBC] 
Pooling = Yes 

[ODBC Driver 13 for SQL Server] 
Description=Microsoft ODBC Driver 13 for SQL Server 
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.1.0 
UsageCount=1 
CPTimeout=120 

テストスクリプトEXEC sp_who2各実行後に接続が閉じられていることがわかります。 Windowsでsqlsrvを使用すると、期待どおりに接続が開いたままになり、sp_who2出力に表示されます。

接続プーリングが存在することが確認されたWindowsでは、接続プーリングで予想されるように接続時間が大幅に短縮されます。

答えて

0

マイクロソフトはこのバグを認め、以来、プーリングをサポートする新しいバージョンをリリースしました。

関連する問題