PHP内存不足读取blob
我有一个php函数,可以从blob字段中获取所有图像 详情如下:PHP内存不足读取blob,php,blob,firebird,Php,Blob,Firebird,我有一个php函数,可以从blob字段中获取所有图像 详情如下: $db_corp = new PDO ("firebird:dbname=DATA.FDB;host=localhost", "sysdba", "masterkey"); $query_corp1= "Select CODPROD, ,FOTO From PRODUCT"; $result_corp1 = $db_corp->prepare($query_corp1); $result_corp1->execut
$db_corp = new PDO ("firebird:dbname=DATA.FDB;host=localhost", "sysdba", "masterkey");
$query_corp1= "Select CODPROD, ,FOTO From PRODUCT";
$result_corp1 = $db_corp->prepare($query_corp1);
$result_corp1->execute();
$result_corp1->bindColumn(1, $corp1_CODPROD);
$result_corp1->bindColumn(9, $corp1_FOTO, PDO::PARAM_LOB);
while($result_corp1->fetch()){
if($corp1_FOTO){
file_put_contents($corp1_CODPROD.".png",$corp1_FOTO);
}
}
该脚本运行良好,拍摄了数据库中几乎一半的照片,但在这个过程中,我遇到了以下错误
致命错误:允许的内存大小134217728字节已用尽(尝试分配480055字节)
我已经尝试了gc_enable();和gc_收集_循环;
我的数据库有2100个产品,但其中一半有图片,我需要将其解压缩到一个文件中
感谢advancer提高php.ini中的内存使用率可能会有所帮助,但这只是一个脏补丁,不是真正的解决方案。尝试每次检索100行,然后清理一些内存并重新开始。。。在“伪代码”中:
$from=1;
$to=100;
而($to
您可以增加内存限制
,该限制当前似乎设置为128M
我可以在本地执行。但是我在主机中没有这样的特权。你的另一个选择是在页面中获取数据。在获取结果集时,每一行都存储在PHP内存空间中,直到内存耗尽。从您的问题来看,我不清楚,您是否在执行后和while
循环期间收到错误?还是在执行过程中出现错误?我相信从你的陈述来看,你在循环中得到了它,只是想澄清一下。非常感谢你给了我一个好主意。现在我使用ajax每次迭代100行,效果非常好
$from = 1;
$to = 100;
while ($to < totalLines()) {
getLines($from,$to);
$from += 100;
$to += 100;
clearMemory();
}