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では、接続プーリングで予想されるように接続時間が大幅に短縮されます。