![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 269 Pomógł: 7 Dołączył: 12.10.2006 Skąd: Newcastle Upon Tyne Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam while z okolo 30000 rekordów które dodaje do bazy przyklad:
Wszystko dziala jednak system sie wywala jesli zrobie insert wiecej niz 5000 kazdego razu. Dodalem ini_set("memory_limit","16000M"); ale ciagle nie dziala. Zastanawiam sie czy da sie zrobic ze wysle 5000 rekordow potem strona sie przeladuje i zrobi kolejne 5000 i tak az do 30000?? Dzieki |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
A w jaki sposób się wywala?
I na jaką cholere to serduszko w temacie (IMG:style_emoticons/default/tongue.gif) ? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
to zależy czy chcesz to jednorazowo zrobić, czy masz potrzebę robienia tego cyklicznie jeżeli jednorazowo - to rozbij to na małe pętle np. po 1000 , po skończeniu zapisz sobie do pliku tekstowego gdzie skończyłeś, odśwież i od nowa, a jeżeli cyklicznie to cron
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 269 Pomógł: 7 Dołączył: 12.10.2006 Skąd: Newcastle Upon Tyne Ostrzeżenie: (0%) ![]() ![]() |
Wiec tak mam csv z 30000 rekordami na serverze i funkcje która go czyta. Jak zwiekszylem pamies do 16mb to funkcja wyświetla na ekran 30000 rekordów. Schody zaczynaja się kiedy muszę wysłać przetworzone dane do kolejnego serwera wtedy mam myślenie przez 3 min i nic się nie dzieje. Jak zmniejsze czytanie tylko 5000 rekordów i przesłanie wszystko działa idealnie. Czyli szukam rozwiązania gdzie Cron uruchomi plik i plik zrobi 5000 rekordów wyśle je a potem zrobi kolejne 5000 i tak do 30000 jak to najlepiej rozwiązać? Dzieki
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
No, ale skoro wiesz co chcesz zrobić to w czym problem? Po za tym problem nie jest nowy jak dobrze poszukasz to znajdziesz gotowy kod, np. http://www.sitepoint.com/forums/php-34/spl...p-670155-2.html, http://www.codewalkers.com/c/a/Database-Co...SV-Importer-20/
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 269 Pomógł: 7 Dołączył: 12.10.2006 Skąd: Newcastle Upon Tyne Ostrzeżenie: (0%) ![]() ![]() |
Tu nie chodzi o użycie gotowca a i tak większość się wywala przy dużych plikach jak 30000 rekordów. Poza tym plik przesyła dane przez Api do mailchimp. Wiem co chce zrobić ale nie wiem jak wstawić limit na while wykonać resztę kodu i uruchomić ta sama pętlę ale zacząć od miejsca gdzie skończyła poprzednia.
|
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Wykonuj insert do bazy co któryś przebieg pętli np. co 500 (jak - dzielenie modulo) i wówczas również czyść tablicę $batch ($batch = array()). Powinno pomóc.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.09.2025 - 22:15 |