Zadejte hledaný výraz...

Efektivni zpracovani velkeho CSV souboru v PHP

Taps
verified
rating uzivatele
(118 hodnocení)
4. 2. 2017 09:10:37
Zdravim,
Muzete mi prosim poradit jak v php efektivne a jednoduse zpracovat velky csv soubor (12 MB) a ulozit data do databaze.
Pripadne i nejaky wordpress plugin, ktery toto umi.
Dekuji
4. 2. 2017 09:10:37
https://webtrh.cz/diskuse/efektivni-zpracovani-velkeho-csv-souboru-v-php#reply1257133
smrtka
verified
rating uzivatele
(3 hodnocení)
4. 2. 2017 10:17:45
12MB a moc velky? Je s tim nejaky konkretni problem? Posledne jsem zpracovaval 1,8GB phpkem... sice to trvalo asi 2min (custom VPS), ale ulozilo se vse
4. 2. 2017 10:17:45
https://webtrh.cz/diskuse/efektivni-zpracovani-velkeho-csv-souboru-v-php#reply1257132
Taps
verified
rating uzivatele
(118 hodnocení)
4. 2. 2017 13:54:20
Přijde mi, že to je strašně pomalé, navíc se mi pak zobrazuje 504 Gateway Time-out
nastavení php uvádím níže
max_execution_time = 8000 ; Maximum execution time kazdeho scriptu, v sekundach
max_input_time = 240 ; Maximum amount of time each script may spend parsing request data
memory_limit = 512M ; Maximum amount of memory a script may consume
display_errors = On ; stdout (On) - Display errors to STDOUT
log_errors = Off ; Log errors into a log file (server-specific log, stderr, or error_log (below))
upload_max_filesize = 200M ; Maximum allowed size for uploaded files.
post_max_size = 200M
4. 2. 2017 13:54:20
https://webtrh.cz/diskuse/efektivni-zpracovani-velkeho-csv-souboru-v-php#reply1257131
node
verified
rating uzivatele
(5 hodnocení)
4. 2. 2017 14:30:13
12 mega je nic. chyba bude skor v tom ako to ukladas do db.
4. 2. 2017 14:30:13
https://webtrh.cz/diskuse/efektivni-zpracovani-velkeho-csv-souboru-v-php#reply1257130
Taps
verified
rating uzivatele
(118 hodnocení)
4. 2. 2017 14:47:08
kod uvádím zde http://pastebin.com/tT9WYaV7. mohl by mi teda někdo poradit jak kód zoptimalizovat...?
Děkuji
4. 2. 2017 14:47:08
https://webtrh.cz/diskuse/efektivni-zpracovani-velkeho-csv-souboru-v-php#reply1257129
pest
verified
rating uzivatele
(10 hodnocení)
5. 2. 2017 02:20:36
Tak jestli dobře chápu, problém je v rychlosti zpracování, tu ale ve Wordpressu neovlivníš jinak než výkonější databází, případně změnou DB engine - např. za MariaDB nebo PerconaDB.
To je všude v těch CMSkách, insertovat po jednom je pomalé, musel bys to obejít na úrovni databáze, zamknout si tabulky a pracovat přímo se SQL strukturou.
Tady mně napadá jen jedno řešení - nahraj do filesystému ten soubor, a skript na import udělej v CLI, a pak ho pouštět buď cronem (objeví soubor, importuje soubor, smaže soubor) nebo ho pustíš jako asynchronní proces (nečekáš na výstup).
Pak jedině pořádné VPS, pokud se to dělá často.
5. 2. 2017 02:20:36
https://webtrh.cz/diskuse/efektivni-zpracovani-velkeho-csv-souboru-v-php#reply1257128
TomasX
verified
rating uzivatele
(4 hodnocení)
5. 2. 2017 10:25:22
v tomhle případě pomůže ještě jiná věc, dělej to paralelně. Nejjednodušší je upravit skript, aby bral každou N položku a poté ho spustit dvarkát, třikrát. Pokud nevíš jak na to, klidně si napiš, algoritmus je snadný. WP při vkládání článku není tak náročný na samotnou databázi jako na velké množství dotazů z php a režiji při zpracování na straně php a komunikace s databází. Ze zkušenosti mohu říct, že běžný slabý hosting snese takhle 2 - 4 vkládané články najednou.
pest: myslím, že tady tazatel je na obyč hostingu, tam těžko může vyměnit db a výhodně pro něj už může být i vlastní vps, ale s tím má zase náklady a starosti navíc, pak je spíše na samotném adminu, kterou db s jakým nastavením zvolí, percona zrovna u WP velký boost nepřidává, muselo by se jednat o hodně navštěvovaný web s hodně živými komentátory.
5. 2. 2017 10:25:22
https://webtrh.cz/diskuse/efektivni-zpracovani-velkeho-csv-souboru-v-php#reply1257127
node
verified
rating uzivatele
(5 hodnocení)
5. 2. 2017 15:39:59
Neviem ako je na tom Wordpress ale drupal ma na tieto veci frontu+batch. Skus si prebehnut apicko ci tam nieco podobne nenajdes.
5. 2. 2017 15:39:59
https://webtrh.cz/diskuse/efektivni-zpracovani-velkeho-csv-souboru-v-php#reply1257126
Richard
verified
rating uzivatele
13. 2. 2017 22:26:30
Teď jsem dělal CSV uploader do tabulky ve Wordpressu. Prostě to byla jedna externí php stánka, kterou jsi pomocí formu uploadnul soubor CSV a ten se rychle načetl do tabulky. Klíčové je aby tabulka a CSV měly stejný formát pro sloupce. Pak jde použít rychlou krásnou SQL funkci LOAD DATA LOCAL INFILE, která načte CSV do SQL tabulky hodně rychle. A nemusíš zbytečně parsovat CSV po jednotlivých řádcích atd. Jde to udělat asi i v rámci Wordpress pluginu myslím, ale tohle mi přišlo rychlejší.
13. 2. 2017 22:26:30
https://webtrh.cz/diskuse/efektivni-zpracovani-velkeho-csv-souboru-v-php#reply1257125
TomasX
verified
rating uzivatele
(4 hodnocení)
13. 2. 2017 22:30:15
tahle konstrukce bývá kvůli bezpečnosti na řadě databází ale zakázaná. Uložení WP článku může generovat záznamy ve více tabulkách podle aktivních pluginů. Ale ano, je to nejrychlejší cesta, jak dostat do db data.
13. 2. 2017 22:30:15
https://webtrh.cz/diskuse/efektivni-zpracovani-velkeho-csv-souboru-v-php#reply1257124
Richard
verified
rating uzivatele
13. 2. 2017 22:34:53
Napsal TomášX;1363329
tahle konstrukce bývá kvůli bezpečnosti na řadě databází ale zakázaná. Uložení WP článku může generovat záznamy ve více tabulkách podle aktivních pluginů. Ale ano, je to nejrychlejší cesta, jak dostat do db data.
Je to možné. Já tohle dělal, abych uploadnul data pro unikátní tabulku, kterou potřeboval custom-made plugin. Tedy nešlo o články.
Cílem mého popisu bylo ukázat na LOAD DATA INFILE funkci, která je fakt rychlá pro upload CSV do DB
13. 2. 2017 22:34:53
https://webtrh.cz/diskuse/efektivni-zpracovani-velkeho-csv-souboru-v-php#reply1257123
Pro odpověď se přihlašte.
Přihlásit