Zadejte hledaný výraz...

Jak sdilet objekt mezi PHP skripty?

Martis Pacovsky
verified
rating uzivatele
(50 hodnocení)
12. 10. 2012 14:14:09
Delam import XML do databaze pres simpleXML. Protoze je to pomerne velke XML, nacitam ho po 100 polozkach volanim skriptu s parametrem ?ofset=100, ?ofset=200 atd.
Dotaz zni, jde udelat to, abych nacetl $xml = simplexml_load_file($jmenosouboru); jen pri prvnim pruchodu a pak uz jen odkazal na $xml a neparsovalo se to velke XML pri kazdem volani importniho skriptu?
P.S.: Session mi hazi chybu pri serializaci objektu
12. 10. 2012 14:14:09
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818933
Velky XML není vhodné parsovat pomocí SimpleXML, protože si vytváří celý strom v paměti.
Vhodnější je na toto použít http://www.php.net/manual/en/ref.xml.php a parsovat to za běhu.
12. 10. 2012 14:30:48
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818932
Pokud jsou vstupní data velká, není lepší dát skriptu dostatečnou paměť na jednorázové zpracování?
12. 10. 2012 14:32:02
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818931
Martis Pacovsky
verified
rating uzivatele
(50 hodnocení)
12. 10. 2012 14:36:04
27MB XML nekonci na pameti, ale na limitu pro beh skriptu.
Proto to delam po krocich.
Nasel jsem jeste funkce knihovny APC
ulozeni
apc_store('my_key', $obj);
a vyvolani pomoci
$obj = apc_fetch('my_key');
ale tam uz to konci na pameti
12. 10. 2012 14:36:04
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818930
Tak můžeš zvýšit timeout limit?
12. 10. 2012 14:37:57
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818929
27 MB XML neznamená, že si skript vezme 27 MB. Co vím, tak ten strom ze SimpleXML zabare více než velikost vstupních dat.
Já jsem to při importu vyřešil tak, že to parsuji http://www.php.net/manual/en/ref.xml.php a vypnu pomocí funkce set_time_limit limit běhu PHP skriptu.
12. 10. 2012 14:40:42
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818928
Martis Pacovsky
verified
rating uzivatele
(50 hodnocení)
12. 10. 2012 14:41:28
To muzu ale zkus cekat 20 minut na dokonceni behu skriptu bez jakehokoliv vystupu :) takhle vidim u jake polozky jsem jednou za par vterin. - volam to ajaxem do framu, takze je to prehledne.
Ale otazka znela jinak. Jak sdilet objekt mezi skripty?
12. 10. 2012 14:41:28
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818927
Vypni output buffering (nebo použij flush() za echo) a můžeš si průběžně vypisovat, jak je proces daleko.
Pokud to opravdu chceš dělat po kouscích, nezbývá než objekt serializovat a uložit do cache.
Podle mě ale zbytečně složité řešení, když stačí zvednout time limit.
A 20 minut na 27 MB dat, není to nějak dlouho? Tam bude nějaký zádrhel.
12. 10. 2012 14:57:22
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818926
Jakub Loubal
verified
rating uzivatele
12. 10. 2012 14:59:36
Jak sdilet objekt mezi skripty? .... SESSION prece slouzi ke sdileni promennych mezi skripty .... objekt si do ni muzes serializovat
Ale kdybych neodpovidal na otazku, tak bych jen podokl (podobne jako ostatni), ze takovy pristup neni uplne stastny.
12. 10. 2012 14:59:36
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818925
Martis Pacovsky
verified
rating uzivatele
(50 hodnocení)
12. 10. 2012 15:01:06
Napsal Martin Schlemmer;855897
...A 20 minut na 27 MB dat, není to nějak dlouho? Tam bude nějaký zádrhel.
To jsem samozrejme prestrelil. Je to principialni zalezitost.
Ten flush je dobry napad
12. 10. 2012 15:01:06
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818924
K0nias
verified
rating uzivatele
12. 10. 2012 15:02:28
12. 10. 2012 15:02:28
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818923
Martis Pacovsky
verified
rating uzivatele
(50 hodnocení)
12. 10. 2012 15:03:24
Napsal Jakub Loubal;855900
Jak sdilet objekt mezi skripty? .... SESSION prece slouzi ke sdileni promennych mezi skripty .... objekt si do ni muzes serializovat.
Prave pri serializaci do session mi to hazi chybu, jak uz jsem psal hned v prvnim prispevku.
12. 10. 2012 15:03:24
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818922
Petr
verified
rating uzivatele
12. 10. 2012 15:05:03
Jak píše Martin Schlemmer, serializovat a do cache. Nic lepšího snad ani neni
12. 10. 2012 15:05:03
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818921
Jakub Loubal
verified
rating uzivatele
12. 10. 2012 19:32:06
Napsal Martis78;855904
Prave pri serializaci do session mi to hazi chybu, jak uz jsem psal hned v prvnim prispevku.
Sorrac, PS jsem nebral na vedomi
12. 10. 2012 19:32:06
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818920
"Hází chybu": Jakou chybu? Debugging 101.
12. 10. 2012 21:34:28
https://webtrh.cz/diskuse/jak-sdilet-objekt-mezi-php-skripty#reply818919
Pro odpověď se přihlašte.
Přihlásit