我试图用一些SQL Server 2008 r2数据填充HTML表格,控制器(php_sqlsrv)工作正常,表格填充得很好,但是当我尝试检索2000行或更多行时(也许它会崩溃并显示这条消息:
SQL错误:数组([0] =>数组([0] => IMSSP [SQLSTATE] => IMSSP [1] => -59 [代码] => -59 [2] = >缓冲查询的内存限制超过10240 KB [message] =>缓冲查询的内存限制超过10240 KB))
我该如何解决这个问题?这是PHP还是sqlsrv问题?我可以从SQL Server Management Studio修复此问题吗?
答案 0 :(得分:10)
更改php.ini中的设置。
部分:sqlsrv
指令:sqlsrv.ClientBufferMaxKBSize。
答案 1 :(得分:10)
在php.ini中添加两行
extension=php_pdo_sqlsrv_55_ts.dll
extension=php_sqlsrv_55_ts.dll
client_buffer_max_kb_size = '50240'
sqlsrv.ClientBufferMaxKBSize = 50240
答案 2 :(得分:4)
如果您不需要生产服务器更改php.ini,您也可以在运行时更改设置(检查这是否适用于您的托管)。
使用以下行更新代码:
ini_set('memory_limit','256M'); // This also needs to be increased in some cases. Can be changed to a higher value as per need)
ini_set('sqlsrv.ClientBufferMaxKBSize','524288'); // Setting to 512M
ini_set('pdo_sqlsrv.client_buffer_max_kb_size','524288'); // Setting to 512M - for pdo_sqlsrv
要检查您的服务器是否支持此功能,请在设置完上述内容后打印值。
echo ini_get('memory_limit');
echo ini_get('sqlsrv.ClientBufferMaxKBSize');
echo ini_get('pdo_sqlsrv.client_buffer_max_kb_size');
新值应该是我们在ini_set()中设置的值。否则,服务器不支持运行时配置更改。