Wpis z mikrobloga

#programowanie #symfony2 #symfony

foreach($entities as $entity) {
$dlFromNet = $entity->downloadXls();
foreach($dlFromNet as $xls) {
$row = new xls();
$row->setName()......
$em->persist($row);
}
$em->flush();
}

tak na szybko, prosty przykład.
Sprawa jestt taka żę w pętli dlFromNet wykonuję około 3000-5000 operacji, plików pobieram około 10 więc do bazy muszę wrzucić trochę danych.
Przy trzeciej pętli skrypt zaczyna znacząco zwalniać... mógłbym zrobić $em->clear(); ale wtedy tracę encje $entities...
Jak sobie z tym poradzić? flush co 1500 - 3000 rekordów nic nie daje...

Pozostaje rozbić entities na mniejszą ilość pętli ale to ostateczność..

Skrypt odpalam z poziomu konsoli

Jak to przyśpieszyć?
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

1. Czy problemem jest to że to się długo wykonuje w ogóle, czy to że się wykonuje długo gdy nie jest to robione częściami?


@Jaslanin: w ogóle, jeżeli puszczę mniejszy okres albo mniejszą ilośc danych to z--------a ładnie

dobrze jest też wyłączyć SQL
  • Odpowiedz