Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP内存不足读取blob_Php_Blob_Firebird - Fatal编程技术网

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

我有一个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->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();
}