Comment puis-je utiliser Laravel du morceau pour éviter de manquer de mémoire?

Je suis en tirant autour de 100k enregistrements des tables temporaires, en faisant une légère modification sur les données, le téléchargement de photos, puis en plaçant le champs j'ai besoin de garder dans un "maître" de la table. C'est rapidement la cause de mes app crash car il est à court de mémoire.

J'ai lu le très brève de docs sur l'utilisation de chunk() avec Laravel est éloquent ORM, mais ne sais pas comment même de commencer à la mettre en oeuvre dans ma classe.

Voici ce que je fais actuellement:

    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";
        });
    }

}

Chaque tétée (ou la source de données) est déversé dans une table temporaire dans un autre corvée. Cela fonctionne bien. Ensuite, je prends toutes les listes d'un tableau (qui est d'environ 30k en moyenne) et de gérer mon ListingMigrator méthode.

Où dois-je mettre le morceau dans cet exemple? Serait-il remplacer la ligne:

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

Je ne comprends pas tout à la fermeture dans la éloquent docs. C'est tout ce qu'ils ont à dire à ce sujet et voici l'exemple de code à partir de la Laravel site:

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

OriginalL'auteur Chris Farrugia | 2015-01-22