2016-11-23 11 views
3

Мы только что установили последние версии драйверов SQL 13 и последние расширения sqlsrv и sqlsrv_pdo PHP. Пул соединений не работает.Пул соединений не работает с драйвером ODBC 13 для SQL Server для Linux

  • ОС: CentOS 7.2
  • PHP: PHP 7.0.12
  • SQL Driver: Драйвер ODBC 13 для SQL Server

Резюме теста: Мы создали тестовый скрипт, который будет подключаться к БД. После выполнения сценария соединение закрывается, подтверждается БД.

odbcinst.ini:

[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 

Тестовый сценарий, который включает в себя некоторые временные (мс):

$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, и работает EXEC sp_who2 мы видим, что соединения закрываются после каждого прогона. Использование sqlsrv в Windows делает подключения открытыми, как и ожидалось, и выводится на выход sp_who2.

В Windows, где мы подтвердили, что соединение пула существует, время соединения значительно быстрее, как можно было бы ожидать при объединении пулов.

ответ

0

Microsoft признала ошибку и с тех пор выпустила новую версию, которая поддерживает объединение.