【发布时间】:2021-02-18 05:34:07
【问题描述】:
我有 Windows Server + MSSQL2017 + php7.3.13 + PDO(pdo_sqlsrv 和 sqlsrv)
PHPInfo: memory_limit=16M / both buffer_max_kb_size=10240
如果我从 DB 获得的数据少于 600kb,则此代码可以正常工作。 如果我想获得更多字符串,我将一无所获。没有错误。快速执行和白屏。 我已经看到一些增加 buffer_max_kb-params 的建议,但在我的 phpinfo 中,我看到它们设置为 10M。 我的最大数据大小是 2M(为了测量数据大小,我在 MSSM 中执行查询并将结果保存到文本中) 所以必须有另一种选择,但它是什么?什么都找不到(
代码:
try{
$conn = new PDO( "sqlsrv:Server= $host ; Database = $db ", $user, $pwd);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "select * from tabl";
$stmt = $conn->query($sql);
return $stmt->fetchAll(PDO::FETCH_NAMED);
}
catch(Exception $e){
die(print_r($e));
}
【问题讨论】:
-
一个可能的configuration。
-
如果使用 SQLSRV_CURSOR_BUFFERED 那么我必须增加一点 buffer_max_kb 。否则会出现错误“缓冲查询的内存限制超过 10240 KB”。但也没有任何回报。甚至打印 $stmt->rowCount();不起作用。
标签: php sql-server pdo sqlsrv