连接池不适用于 SQL 服务器的 ODBC 驱动程序 13 Linux
Connection pooling not working with ODBC Driver 13 for SQL Server for Linux
我们刚刚安装了最新的 SQL 13 个驱动程序以及最新的 sqlsrv 和 sqlsrv_pdo PHP 扩展。连接池似乎不起作用。
- OS: 美分OS 7.2
- PHP:PHP 7.0.12
- SQL 驱动程序:SQL 服务器的 ODBC 驱动程序 13
测试总结:我们创建了一个连接到数据库的测试脚本。脚本执行后连接关闭,由DB确认。
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 和 运行ning EXEC sp_who2 我们可以看到连接在每个 运行 后关闭。在 Windows 上使用 sqlsrv 确实按预期保持连接打开,并且确实显示在 sp_who2 输出中。
在 Windows 上,我们确认确实存在连接池,连接时间明显更快,正如人们对连接池所期望的那样。
Microsoft 承认了该错误并发布了支持池化的新版本。
我们刚刚安装了最新的 SQL 13 个驱动程序以及最新的 sqlsrv 和 sqlsrv_pdo PHP 扩展。连接池似乎不起作用。
- OS: 美分OS 7.2
- PHP:PHP 7.0.12
- SQL 驱动程序:SQL 服务器的 ODBC 驱动程序 13
测试总结:我们创建了一个连接到数据库的测试脚本。脚本执行后连接关闭,由DB确认。
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 和 运行ning EXEC sp_who2 我们可以看到连接在每个 运行 后关闭。在 Windows 上使用 sqlsrv 确实按预期保持连接打开,并且确实显示在 sp_who2 输出中。
在 Windows 上,我们确认确实存在连接池,连接时间明显更快,正如人们对连接池所期望的那样。
Microsoft 承认了该错误并发布了支持池化的新版本。