Yii Framework - Modeli Parçalar Halinde İşlemek

Tamer tarafından, 12 18 2012 02:29:00 tarihinde yayınlandı.

Geçenlerde bir hesaplama işlemi için tüm kayıtları işleme koymam gerekiyordu. Ancak 2000 nci kayıttan sonra PHP bellek hatası verdi.

Açıkcası tek seferde Tüm verileri gözden geçirmek iyi bir fikir değildi. Bu yüzden belirli periyotlarla geçirmek daha sağlıklı olurdu bu işin tek püf noktası ise  her periyot bitiminde unset kullanmak olduğunu gördüm.

geriye MYSQL'de nasıl uyguyacağım kalmıştı ki çözüm oldukça basitmiş.

$loopLimit = 1000;      

for ($i = 0; $i <= $total; $i=$i+$loopLimit) {

                $criteria=new CDbCriteria;                       

                $criteria->offset=$i;
                $criteria->limit=$loopLimit;            

                $items = Uyeler::model()->findAll($criteria); 

                foreach ($items as $item) {
                /** İşlem YAPTIR **/
                }

                unset ($items);
                unset ($item);
}