我有一个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);
}
}
脚本运行良好,几乎占用了数据库中的一半照片,但在此过程中我遇到了以下错误。
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 480055 bytes)
我已经尝试过gc_enable();和gc_collect_cycles; 我的数据库有2100个产品,但有一半有图片,我需要将其提取到文件中。
先谢谢了
答案 0 :(得分:1)
php.ini中内存使用量的增加可能有所帮助,但这只是一个肮脏的修复,而不是一个真正的解决方案。尝试每次检索100行,而不是清理一些内存并重新开始...在“伪代码”中:
$from = 1;
$to = 100;
while ($to < totalLines()) {
getLines($from,$to);
$from += 100;
$to += 100;
clearMemory();
}