Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHPExcel]Eksport dużej ilości danych
Forum PHP.pl > Forum > Przedszkole
evolucja
Poddaję się. Pół dnia spędziłem na próbie znalezienia rozwiązania.

CEL: pobieram z MySQl ok. 15k rekordów, każdy zawiera dane w 28 kolumnach. Chcę je wyeksportować do pliku .xlsx bez żadnego dodatkowego formatowania, po prostu ciągiem jak lecą z bazy.
PROBLEM: skrypt przekracza 256MB pamięci "Fatal error: Allowed memory size of 268435456 bytes exhausted"

CO PRÓBOWAŁEM:
- wypisać ciągiem 15k rekordów
- zmienić jednostkowe ustalanie komórki na wypisywanie całej tablicy za pomocą funkcji $objPHPExcel->setActiveSheetIndex(0)->fromArray
- podzielić zapis na kilka części:
* otworzyć plik
* zapisać 2k rekordów
* zamknąć plik, zniszczyć zmienne
niestety sposób nie zadziałał, bo PHPExcel wczytuje do pamięci cały plik(nawet jeśli chcę do niego tylko dopisać fragment)
- użyć różnych opcji cachowania komórek. Niewiele pomogło
  1. $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
  2. $cacheSettings = array( ' memoryCacheSize ' =>'200MB');
  3. PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);


Limit nie do przekroczenia to ok. 7000 rekordów. Tyle maksymalnie udało mi się za jednym razem wyeksportować.

Proszę o pomoc..
Posio
Robisz to na localu czy na jakimś zew. hostingu ? Jedyną opcją jaką widzę to zwiększenie pamięci, na localu albo na własnym serwerze to nie problem.
Mackos
No to może po prostu połącz się przez ssh, i wygeneruj na serwerze zrzut bazy.
Żeby było do excela to tu masz taki przykład:
http://www.debianadmin.com/export-mysql-da...a-csv-file.html
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.