PHP内存限制问题编辑多个文件

PHP内存限制问题编辑多个文件,php,image,memory,limit,Php,Image,Memory,Limit,我有一个脚本,它在一个目录中循环,并将目录中的所有图像编辑为特定大小,问题是总共有1000个图像,最高可达300MB 是否有一种方法可以在每次循环后从内存中删除这个创建的图像,这样它就不会计入php内存限制,还是只需要将内存限制设置为-1 foreach($image as $file){ // obviousment this provides a valid image resource $new_image = Common::resizeImg($file['tmp_na

我有一个脚本,它在一个目录中循环,并将目录中的所有图像编辑为特定大小,问题是总共有1000个图像,最高可达300MB

是否有一种方法可以在每次循环后从内存中删除这个创建的图像,这样它就不会计入php内存限制,还是只需要将内存限制设置为-1

foreach($image as $file){
    // obviousment this provides a valid image resource
    $new_image = Common::resizeImg($file['tmp_name'], $file['ext'], 215, 121);
    imagejpeg($new_image, SERVER_ROOT."/img/media/small-".$id.$file_ext, 100);

    // clear/reset this memory???
}
您可以尝试调用,这将清除与传入的映像资源关联的所有内存:

foreach($image as $file){
    // obviousment this provides a valid image resource
    $new_image = Common::resizeImg($file['tmp_name'], $file['ext'], 215, 121);
    imagejpeg($new_image, SERVER_ROOT."/img/media/small-".$id.$file_ext, 100);

    imagedestroy($new_image);
}
请确保在写入磁盘后进行更改,否则会将每个新映像添加到内存中。

默认情况下,可以将php.ini中的内存限制更改为16MB以上的任何值

在我的例子中,我把它放在64或128,这就足够了。您还可以使用imagedestroy释放内存。例如:

$image=ImageCreateTureColor100100; 图像破坏$图像


这样可以释放已使用的内存。

我希望您可以从控制台执行该操作:如果是这样的话,试着把它分成更小的任务。当然,您可以将内存限制设置为-1。但这可能很危险。你是对的,但是这个脚本是在多个不同的共享主机提供商之间传递的,所以我正在寻找一个更简单的解决方案。