![]() |
![]() |
![]()
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: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Czy Symfony+Doctrine jest na tyle `kijowe`, że nie radzi sobie z długo wczytującymi się stronami? Symfony to tylko narzędzie. Jak się walniesz młotekiem w palec to młotek będzie kijowy?Skąd mamy wiedzieć co napisałeś i jak to napisałeś? Jedyne co Ci mogę powiedzieć to to, że Doctrine nie jest dobrym wyborem. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 20.10.2002 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Napisałem mniej więcej - co napisałem i jak skrypt wygląda... nie ma nic skomplikowanego w tym co zrobiłem - w funkcji dodającej rekord itp - tym bardziej, że cała stronka działa dobrze, jeżeli chodzi o szybkość, oprócz tego, że do dodania jest kilkanaście tysięcy rekordów.
Uważasz, że Propel jest lepszy? RS |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Aaaa, wczytujesz te rekordy tworząc obiekt z każdego wiersza pliku i sapisując go?
To błąd. Doctrine tego nie pociągnie. Propel ma szansę. A co do pytania: oczywiście że Propel jest lepszy. Dlaczego? Bo ma większe mozliwości. Doctrine ma w planach to co Propel ma od dawna. |
|
|
![]()
Post
#5
|
|
![]() Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn ![]() |
a moze zwyczajnie konczy Ci sie czas wykonywania skryptu? albo memory limit, zoptymalizuj zeby szybciej rzeźbiło...
|
|
|
![]()
Post
#6
|
|
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 |
|
|
![]()
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
~kwiateusz to niewiele da, ponieważ Doctrine jest strasznie zasobożerny i dodatkowo ma problemy ze zwalnianiem zasobów po nieuzywanych już obiektach.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
może jakiś unset" title="Zobacz w manualu PHP" target="_manual?
uuuuuuu, to grubsza sprawa. Ten post edytował LBO 9.07.2008, 17:53:06 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 16:00 |