Мы только что установили последние версии драйверов 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, где мы подтвердили, что соединение пула существует, время соединения значительно быстрее, как можно было бы ожидать при объединении пулов.