图像迁移脚本 - 允许的 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字节已用尽