Uberalles_gr Δημοσ. 14 Νοεμβρίου 2017 Δημοσ. 14 Νοεμβρίου 2017 Καλησπέρα σας, θέλω να να φτιάξω ένα excel αρχείο με php όπου θα έχει ~10 στήλες και η κάθε στήλη μπορεί να έχει μέχρι και ~500.000 rows. Η κάθε στήλη θα έχει ημερομηνίες και αριθμούς όχι τίποτα τρελά κείμενα. Με PHPExcel που έκανα κάποιες δοκιμές είναι πολύ περιορισμένα τα πράγματα όσον αφορά τα μεγέθη που θέλω. Έχετε να προτείνετε κάτι;
mad-proffessor Δημοσ. 14 Νοεμβρίου 2017 Δημοσ. 14 Νοεμβρίου 2017 Τι όριο εχει το PHPExcel; Σπασε τις εγγραφές σε 3 worksheets και δωσε προσοχή να μη γίνεται exhaust η μνήμη.
Uberalles_gr Δημοσ. 15 Νοεμβρίου 2017 Μέλος Δημοσ. 15 Νοεμβρίου 2017 Στις δοκιμές που κάνω, "σκάει" από μνήμη με 2 στήλες των 70.000 rows = 140.000 εγγραφές όταν θέλω 5.000.000
defacer Δημοσ. 15 Νοεμβρίου 2017 Δημοσ. 15 Νοεμβρίου 2017 Το phpexcel είναι απερίγραπτο memory hog. Πρέπει να ψαχτείς πολύ και να διαβάσεις source και να πειραματιστείς για να δεις ποιά APIs είναι implemented έτσι που να κάνουν τη δουλειά που θες με λιγότερη συγκριτικά κατανάλωση. Επίσης θα αναγκαστείς σίγουρα να ανεβάσεις το memory limit. Και πιθανόν στο τέλος να μη γίνεται έτσι κι αλλιώς αυτό που θες και να χρειαστεί άλλο workaround. Sorry.
mad-proffessor Δημοσ. 15 Νοεμβρίου 2017 Δημοσ. 15 Νοεμβρίου 2017 Αν ειναι για εταιρική χρήση μπορείς κάλλιστα να εγκαταστήσεις την εφαρμογή σου σε ένα τοπικό server με κάμποσα GB RAM και να δώσεις στη php αρκετα έτσι ώστε να γίνει η δουλειά σου. Αν εισαι σε hosting με vps με περιορισμό σε resources (cpu, μνήμη) τότε θα συμφωνήσω με defacer και ενα workaround είναι να χρησιμοποιήσεις κάποιο datagrid που να κάνει fetch απο τη βαση on demand (με pagination? ή χωρις ) καθως ο χρηστης κάνει scroll. Σίγουρα ένα τέτοιο implementation θέλει αρκετή δουλειά.
Uberalles_gr Δημοσ. 15 Νοεμβρίου 2017 Μέλος Δημοσ. 15 Νοεμβρίου 2017 Επειδή και εγώ βλέπω ότι δεν θα γίνει δουλειά (δεν είναι local server η εφαρμογή) σκέφτηκα να ρωτήσω μήπως σας έχει τύχει κάτι αντίστοιχο και έχετε να προτείνετε κάτι. Ευχαριστώ για τις απαντήσεις.
mad-proffessor Δημοσ. 15 Νοεμβρίου 2017 Δημοσ. 15 Νοεμβρίου 2017 Εγω εχω κάνει ένα project σε πλαίσια διπλωματικής παλιότερα όπου οπτικοποιούσες δεδομένα και χρησιμοποίησα datagrid όπου επεξεργαζόσουν ως ένα βαθμό και τα δεδομένα και υπήρχε η επιλογή (απο εμένα) να σώσεις τη δουλειά σε excel με τη χρήση του PHPExcel. Φυσικά δεν έκατσα να ανακαλύψω τα όριο της εγγραφής σε κελιά απο το PHPExcel (είχε πάρα πολύ δουλειά η εργασία). Μαλιστά η βιβλιοθήκη ήταν broken σε σημείο που για να γίνει auto initialize έπρεπε σε ένα σημείο να παρέμβω στο source του (πάλι καλά που γνώριζα απο relative links και καποια άλλα απο λινουξ γιατι αλλιώς άκρη δε θα έβγαζα). Πάντως οφείλω να ομολογήσω ότι ο main dev της PHPExcel με βοήθησε σε κάποιες απορίες που είχα και ήταν αρκετά ευγενικός.
defacer Δημοσ. 15 Νοεμβρίου 2017 Δημοσ. 15 Νοεμβρίου 2017 Δε θυμάμαι λεπτομέρειες αλλά η δική μου εμπειρία ήταν από excel data import/export. Νομίζω στο τέλος έβαλα ένα hardcoded limit σε 10Κ rows ανά αρχείο, αυτό τα λέει όλα. 1
παπι Δημοσ. 15 Νοεμβρίου 2017 Δημοσ. 15 Νοεμβρίου 2017 Παρε σερβερ στη γκουγκλε, σου δινει 300$ δωρο. Παρε ενα vps με τιποτα 128ραμ
alou Δημοσ. 15 Νοεμβρίου 2017 Δημοσ. 15 Νοεμβρίου 2017 Έχεις κοιτάξει άλλα libraries? πρόχειρα, είδα ότι υπάρχουν κανα δυο που διαφημίζουν το lightweight της υπόθεσης, πχ https://github.com/mk-j/PHP_XLSXWriter λέει πως rows time memory50000 1.4s 0MB100000 2.7s 0MB150000 4.1s 0MB200000 5.7s 0MB250000 7.0s 0MB 1
Uberalles_gr Δημοσ. 15 Νοεμβρίου 2017 Μέλος Δημοσ. 15 Νοεμβρίου 2017 Θα το κοιτάξω alou και θα επανέλθω. Ευχαριστώ για το link.
Uberalles_gr Δημοσ. 16 Νοεμβρίου 2017 Μέλος Δημοσ. 16 Νοεμβρίου 2017 Όσον αφορά το PHP_XLSWriter με κάποιες πρώτες δοκιμές που έκανα, φαίνεται ότι για αρχεία μεγάλου όγκου δεδομένων είναι σαφώς καλύτερο από το PHPExcel 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα