gpt4 book ai didi

php - 如何使用 Laravel 的 block 来避免内存不足?

转载 作者:可可西里 更新时间:2023-11-01 06:35:20 25 4
gpt4 key购买 nike

我从临时表中提取大约 10 万条记录,对数据进行一些轻微修改,下载照片,然后将我需要保留的字段放入“主”表中。这很快导致我的应用程序在内存不足时崩溃。

我阅读了有关将 chunk() 与 Laravel Eloquent ORM 一起使用的非常简短的文档,但不知道如何在我的类里面开始实现它。

这是我目前正在做的事情:

    public function fire()
{
// Turn off query logging
DB::connection()->disableQueryLog();

$feeds = RetsFeed::where('active','=',1)->get();
foreach ($feeds as $feed)
{

$class = "TempListing{$feed->board}";

$listings = $class::orderBy('MatrixModifiedDT','desc')->get();

$listings->each(function($listing) use ($feed) {
ListingMigrator::migrateListing($listing,$feed);
echo "Feed: $feed->board\r\n";
echo "SubcondoName: $listing->SubCondoName\r\n";
echo "Development: $listing->Development\r\n";
echo "\r\n";
});
}

}

每个提要(或数据源)都被转储到不同杂务中的临时表中。那很好用。然后,我从一个表(平均约 30k)中获取所有 hte 列表并运行我的 ListingMigrator 方法。

在这个例子中我应该把 block 放在哪里?它会替换行吗:

$listings = $class::orderBy('MatrixModifiedDT','desc')->get();

我不完全理解 Eloquent 文档中的闭包。这就是他们要说的全部内容,这是来自 Laravel 网站的代码示例:

    User::chunk(200, function($users)
{
foreach ($users as $user)
{
//
}
});

最佳答案

chunk 调用应替换 get 调用 - 它旨在处理 pre-get() 查询构建器对象。

$listings = $class::orderBy('MatrixModifiedDT','desc');

$listings->chunk(200, function($listings) use($feed) {
$listings->each(function($listing) use ($feed) {
ListingMigrator::migrateListing($listing,$feed);
echo "Feed: $feed->board\r\n";
echo "SubcondoName: $listing->SubCondoName\r\n";
echo "Development: $listing->Development\r\n";
echo "\r\n";
});
});

关于php - 如何使用 Laravel 的 block 来避免内存不足?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28082279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com