Guest User

Untitled

a guest
Oct 27th, 2015
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. 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?
  2.  
  3. 2. czy rzeczywiście zmierzyłeś że problemem jest duża ilość elementów tj. zrobiłeś częściami, zsumowałeś czas i wyszło że jest krócej niż puszczenie za jednym razem?
  4.  
  5. jeżeli tak spróbuj zwiększyć ilość pamięci, ewentualnie możesz próbować wymuszać garbage collectora: gc_collect_cycles
  6. tylko pamiętaj że gc musi być włączony zend.enable_gc, albo wcześniej go włączyć manulanie gc_enable()
  7.  
  8. dobrze jest też wyłączyć SQL loggera
  9. $em->getConnection()->getConfiguration()->setSQLLogger(null);
  10.  
  11. 3. Wykonywanie tylu operacji przy pomocy Doctrine raczej nigdy nie będzie wydajne, bo ogólnie ORMy mają za zadanie ułatwiać programowanie kosztem wydajności, ale przy dużej skali są zbyt dużym narzutem. Pewnie dużo szybciej by to działało jakby zrobić to przy użyciu PDO i robieniu natywnych zapytań SQL.
  12.  
  13. tutaj masz trochę porad jak sobie z tym radzić:
  14. http://www.doctrine-project.org/2009/08/07/doctrine2-batch-processing.html
  15. http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/batch-processing.html
  16.  
  17. 4. jeżeli to możliwe możesz spróbować wykonywać tą operację współbieżnie:
  18. http://www.php.net//manual/en/class.thread.php
  19. albo poczekać na PHP7 bo tam będzie to lepiej zrobione
  20. ewentualnie jakieś oprogramowanie do obsługi kolejki współbieżnej
  21.  
  22. 5. odnośnie samego kodu
  23.  
  24. foreach($entities as $entity) {
  25.  
  26. w kodzie nazwy zmiennych powinny coś sugerować lepiej by było $cats as $cat
  27.  
  28. $dlFromNet = $entity->downloadXls();
  29.  
  30. XLS jest pobierany, i przypisywany do zmiennej która nic nie mówi że to XLS / dane z xls
  31.  
  32. foreach($dlFromNet as $xls) {
  33. później dziwnie to wygląda że coś pobranego z netu to jakaś tablica/iterator XLSów
  34.  
  35. $row = new xls();
  36. nazwa zmiennej nie mówi jaki obiekt jest w niej
  37.  
  38. $entity->downloadXls();
  39. mam nadzieję że nie pobierasz pliku XLS w entity (single responsibility principle)
Advertisement
Add Comment
Please, Sign In to add comment