PHP bir döngü içinde yeni modeller yükleme

3 Cevap php

Şu anda benim kod bazı üstlenmeden bu hata iletisini mücadele ediyorum:

Ölümcül hata: tükenmiş 33554432 bayt İzin bellek boyutu

Ben bir yerde yarım yamalak kodu olması gerekir rakam. O yüzden gibi bir döngü içinde yeni modeller yüklemek için kötü bir uygulamadır:

<?php 
foreach($blog_ids as $blog_id) { 
    $blog = new Blog($blog_id);
    echo $blog->title;
}
?>

Bu bellek yakmak için hızlı bir yoldur .... ve o ise, nasıl aynı hedefi gerçekleştirmek mi?

EDIT:

  1. Yukarıdaki kod sadece bir parçası olduğunu. Ben her blog için bilgi ton var - bir model büyük ihtimalle bunu işlemek için en iyi yolu olmalıdır.

  2. Bir sayfada kadar 100 farklı blog listeleri olabilir.

3 Cevap

Sizin $ Blog değişken her zaman yeniden, böylece PHP'nin çöp toplayıcısı sizin için önceki blog örneğinin bellek boşaltmak gerekir. memory_get_usage() eğer bu olmuyorsa görmek için döngü içinde kontrol edin.

Ben kayıt başına bir ya da iki bilgi almak için onlardan bir sürü örneğini gerektiğinde Ben de, benim modelleri ile bu sorunu başlamıştı.

Benim çözüm bu boyunca bir Collection sınıfı, bir şey yaratmak için oldu:

class BlogCollection
{
    public function getTitles()
    {
        // select and returns just the titles of blogs
    }
}

Eğer merkezi bir şekilde istediğiniz bilgi almak ve bu şekilde sadece bir ya da iki bilgi almak için tam modelleri yüklemek gerekmez.

Ben Blog yapıcısı ne oluyor bilmiyorum ama ben size bir veritabanından bilgi ile nesne dolduruyor hayal.

(Sadece başlık ... gerekiyorsa) Apart ihtiyacınız daha fazla bilgi alıyorum, size göstermek gerekir 100'e kadar girdileri eğer belki de veritabanına gezileri çok yapıyoruz.

Ne yapardın seferde başlıkların bütün toplama (ve başka ne gerekir) alır statik işlev oluşturmak ve daha sonra görüntülemek için bir dizi olduğunu saklamak olduğunu.