Autor Zpráva
Krakatoa
Profil
Pokud se načte (naparsuje) nějaký velký torrent soubor pomocí utorrent klienta, tak načtení je prakticky okamžité.
Pokud se ale naparsuje torrent soubor pomocí php, tedy aspoň pomocí těch skriptů dostupných na netu, například tohoto:
http://torrenteditor.com/api.php
tak to trvá hodně dlouho, například u mého vzorového torrentu (5000 souborů v torrentu, velikost torrentu 600 kB) mi to trvá na mém pc asi 40 sekund s xdebugem a asi 30 sekund bez něj.
Ukázkový skript s torrentem:
http://nvu.php5.cz/torrent.7z

To nejde udělat v php nějak rychlejc? Pokud ano nějaké nasměrování by nebylo?
Díky.
juriad
Profil
Ano, šlo by to dost zrychlit.
1) Je to psáno zbytečně objektově
2) Práce s řetězci je nedbalá, zbytečně se tam používá substr a strpos. Celé by to šlo přepsat tak, aby to běželo v jedné velké smyčce a rozhodovalo se na základě aktuálního znaku - vlastně stačí implementovat zásobníkový automat.
3) Další urychlení by bylo možné proudovým zpracováním - nemusí se vytvářet celá struktura v paměti, ale jen užitečné části u klienta na základě událostí. Podívej se na http://en.wikipedia.org/wiki/Simple_API_for_XML Tady by to fungovalo obdobně, byl by to druhý zásobníkový automat.

Co to máš za plečku? Mě na 4 roky starém laptopu to doběhne za 8.7 sekundy.
Krakatoa
Profil
juriad:

Tak původně jsem zkoušel to co jsem uvedl a pak ještě Torrent.php.
Teď jsem zkoušel toto:
http://stackoverflow.com/questions/167206/php-module-for-reading-torrent-files
a parsuje to řádově v desetinách sekund (0.36) i na té mé plečce.
Zatím to vypadá použitelně.

Co se týče té mé plečky, nejspíš to bude tím, že mám amd (čtyřjádro) a ne intel a taky je možný, že je to tím že používám nejnovější 64bit php a apache z apachelounge a taky je možné, že to je rychlejší na linuxu, například na php5.cz mi to dalo taky 8 sekund.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: