图像迁移脚本 - 允许的 134217728 字节内存大小已用尽 [重复]

Posted

技术标签:

【中文标题】图像迁移脚本 - 允许的 134217728 字节内存大小已用尽 [重复]【英文标题】:Image migration script - Allowed memory size of 134217728 bytes exhausted [duplicate] 【发布时间】:2017-07-30 18:47:31 【问题描述】:

我正在尝试通过 url 导入大约 130k 图像。我认为写一个cli artisan命令会很方便。

我正在使用 laravel 和“Spatie/MediaLibrary”。

这是我的脚本:

public function handle()
    
       Article::where('index_block_position',0)->each(function($article)
            if($article->featured_image != '')
                try
                    $featuredImage = $this->mediaLibrary->addMediaFromUrl($article, 'http://myoldwebsite.com' . $article->featured_image, 'featured_image');
                    $libraryImage = $this->mediaLibrary->addMediaFromUrl(MediaLibrary::first(), 'http://myoldwebsite.com' . $article->featured_image);
                    $article->index_block_position = 1;
                    $article->save();
                    $this->info("Article $article->id image: $featuredImage->id - Library image: $libraryImage->id - added");
                    Log::useDailyFiles(storage_path().'/logs/featured-image-migration.log');
                    Log::info("Article $article->id image: $featuredImage->id - Library image: $libraryImage->id - added");
                catch (\Exception $e)
                    $this->info("image: $article->featured_image - exception: $e->getMessage()");
                    Log::useDailyFiles(storage_path().'/logs/featured-image-migration.log');
                    Log::info($e->getMessage());
                
            
        );
        $this->info('All done!');
    

不幸的是,在添加了 10 张左右的图片后,我收到以下错误:

Symfony\Component\Debug\Exception\FatalErrorException: Allowed memory size of 134217728 bytes exhausted (tried to allocate 24576 bytes)

我不确定如何才能完成这项工作,因为我有 130k 图像要导入,并且 128M 的内存限制在 10 张图像之后已经用完......

我将不胜感激。

【问题讨论】:

【参考方案1】:

如果您使用的是 Laravel,请考虑将上传文件分解为 jobs,然后随着时间的推移进行排队和处理。

https://laravel.com/docs/5.4/queues

您还可能遇到/etc/php/x.x/fpm/php.ini 中设置的文件上传限制。更具体地说,这些设置:

upload_max_filesize post_max_size

【讨论】:

以上是关于图像迁移脚本 - 允许的 134217728 字节内存大小已用尽 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 pear :致命错误:允许的内存大小为 134217728 字节已用尽(尝试分配 6144 字节)

允许的内存大小 134217728 字节用尽(尝试分配 1052672 字节)

php - 致命错误:允许的内存大小为 134217728 字节已用尽 [重复]

PHP致命错误:允许的内存大小为134217728字节已用尽

允许的内存大小为 134217728 字节已用尽(尝试分配 42 字节)[关闭]

致命错误:PHPExcel 中已用尽的允许内存大小为 134217728 字节