Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z operacja na wielu rekordach
Forum PHP.pl > Forum > PHP
Spyder
Witam

Mam while z okolo 30000 rekordów które dodaje do bazy przyklad:

  1. while ($item <= $no_items) {
  2.  
  3.  
  4.  
  5. $batch[] = array(
  6.  
  7. 'EMAIL'=>$ret[$item]['E-Mail Address'],
  8. 'FNAME'=>$ret[$item]['First Name'],
  9. 'LNAME'=>$ret[$item]['Last Name'],
  10. 'FULLNAME'=>$ret[$item]['Full Name'],
  11. 'GENDER'=>$ret[$item]['Gender'],
  12. 'ADDRESS'=>$ret[$item]['Address'],
  13. 'MOBILE'=>$ret[$item]['Mobile Number'],
  14. 'ORDERS_NO'=>$ret[$item]['Number Of Orders'],
  15. 'AVERAGE_VALUE'=>$ret[$item]['Average Order Value'],
  16. 'TOTAL_VALUE'=>$ret[$item]['Total Order Values'],
  17. 'BRANDS'=>$ret[$item]['Brands'],
  18. 'CATEGORY'=>$ret[$item]['Category'],
  19. 'SUBCAT_1'=>$ret[$item]['Sub Category 1'],
  20. 'SUBCAT_2'=>$ret[$item]['Sub Category 2'],
  21. 'LAST_ORDER'=>$ret[$item]['Last Purchased Date'],
  22. 'DATE_ADDED'=>$ret[$item]['Date Added']
  23.  
  24. );
  25.  
  26. $item++;
  27.  
  28. }


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
pyro
A w jaki sposób się wywala?

I na jaką cholere to serduszko w temacie tongue.gif ?
tehaha
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
Spyder
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
tehaha
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/
Spyder
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.
phpion
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.