Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 20.10.2002 Skąd: Kraków Ostrzeżenie: (0%)
|
Witam ponownie,
no im więcej się programuje, tym więcej wychodzi kwiatków... Ostatnio próbowałem w Symfony wczytać do bazy danych uploadowany plik CSV. Oczywiście upload się powiódł, ale problem polega na tym, że wczytała się tylko około połowa z 8000 wierszy pliku CSV. Co może być powodem tego? Używam PHP Doctrine. Symfony w najnowszej wersji 16 - Doctrine chyba też mam najnowsze. Po uploadzie pliku, stronka rzeźbi, rzeźbi... rekordów w bazie przybywa, po czym po jakimś czasie wyskakuje biała strona i tyle - bez żadnych błedów - nawet w trybie dev - wszystko po mniej więcej 1 min 5sek do 1min 30 sek (mierzyłem kilka razy). Czy symfony ma jakiś timeout? O co wogóle chodzi? Zrobiłem to tak, że wczytuję plik csv i każdą linię explode'uje z `,` jako separator i buduje zapytanie (poprzez funkcje modelu - prosty insert) i w pętli uruchamiam. Niestety na obecną chwilę musiałem to zmodyfikować, żeby ruszyć z projektem i napisałem zwyczajnie w PHP skrypt odpalany z konsoli z parametrami i w Symfony odpalam go poleceniem exec. Czy Symfony+Doctrine jest na tyle `kijowe`, że nie radzi sobie z długo wczytującymi się stronami? Dodam jeszcze, że skrypt PHP - odpalany nawet przez stronkę robi takie coś w mig.... 5 sek, 10 sek... a w Symfony po półtorej minuty wczytała się połowa rekordów i wygenerowała się pusta strona... Dzięki Rafał |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 20.10.2002 Skąd: Kraków Ostrzeżenie: (0%)
|
OK. Jakaś tam wskazówka jest. Faktycznie tworzę nowy obiekt typu NowyWiersz, ustawiam jego właściwości i zapisuję... i tak kilkanaście tysięcy razy. Czy mam użyć jakiegoś destruktora po zapisaniu obiektu w bazie? Poproszę o jakąś dodatkową wskazówkę?
Funkcja wygląda mniej więcej tak:
Przypomniałem sobie, że nie jest to funckja modelu, tylko zawarłem to we fragmencie `action`, ale to nie ważne. Tak naprawdę nie ja zdecydowałem się użyć Doctrine. W pracy takiego czegoś używają, bo Propel nie obsługuje enum... (podobno) - prawda to? Nie ważne... Zależy mi na tym, żeby rozwiązać problem tego zapisywania. set_time_limit ustawiłem dość duży - 3 minuty... Co do pamięci to nie zmieniałem tego parametru. Zrobię to jak tylko będę mógł i dam znać na forum. Mimo wszystko Symfony pracuje baaaaardzo powoli przy czymś takim. Dzięki RS Ten post edytował rsobczuk 9.07.2008, 16:04:56 |
|
|
|
rsobczuk [Symfony/Doctrine] 9.07.2008, 15:08:33
mike Cytat(rsobczuk @ 9.07.2008, 16:08:33 ... 9.07.2008, 15:24:18
rsobczuk Napisałem mniej więcej - co napisałem i jak skrypt... 9.07.2008, 15:29:29
mike Aaaa, wczytujesz te rekordy tworząc obiekt z ... 9.07.2008, 15:33:28
kwiateusz a moze zwyczajnie konczy Ci sie czas wykonywania s... 9.07.2008, 15:57:39
mike ~kwiateusz to niewiele da, ponieważ Doctrine jest ... 9.07.2008, 16:04:59
LBO może jakiś unset" title="Zobacz w manual... 9.07.2008, 17:43:38 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 07:27 |