Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP]przetworzenie w php pliku 3,5 GB

Napisany przez: dentopolis 20.09.2016, 10:55:19

mam plik xml tworzący csv. obecnie mam do przetworzenia plik o wielkości 3,5gb. oczywiście samo otwarcie tego pliku blokuje komputer.czy istnieje możliwość aby plik php go przetworzył stopniowo żeby nie zawieszać komputera? oczywiście myślę o localhost (xampp).
źródło skryptu:http://dentopolis.org/scr/pubfeed/skrypt.txt

Napisany przez: zegarek84 20.09.2016, 11:00:43

http://php.net/manual/en/book.xml.php
a w google
"SAX PHP"

edit
oczywiście będziesz musiał się przestawić na "programowanie zdarzeniowe" lub podpiąć w jednej funkcji wieeeeleee if'ów...

Napisany przez: nospor 20.09.2016, 11:03:05

Do tak duzych plikow nie mozesz uzywac funkcji ala simplexml_load_file() gdyz one laduja caly plik.
Musisz uzywac narzedzi ktore czytaja plik tag po tagu np.
http://php.net/manual/en/book.xmlreader.php

Napisany przez: dentopolis 20.09.2016, 20:07:07

no dobrze. wiem że to nie forum regex ale czy ktoś orientuje się jak powinna wyglądać składnia regex która wartości spomiędzy tagów <Title>...</Title> oraz <Author>...</Author> i wypisze w postaci autor - tytuł?

Napisany przez: nospor 20.09.2016, 21:20:22

jak to ma sie do problemu z plikiem 3.5 GB?

Napisany przez: kreatiff 21.09.2016, 17:02:35

Wspomnianym xmlreader bez problemu wyciągniesz dane z tych tagów. Bez ładowania całego pliku do pamięci. Po prostu w pętli lecącej po wszystkich węzłach sprawdzasz czy ten bieżący to title albo author i jeśli tak, pobierasz wartość. A gdy nie to przechodzisz do kolejnego. Szybko i efektywnie.

Z wyrażeniami regularnymi musisz dodatkowo rozwiązać jakoś ładowanie pliku do pamięci. Czyli wracasz do punktu wyjścia. xmlreader ten problem rozwiąże "z definicji".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)