Progress bar – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Progress bar – PHP – Fórum – Programujte.comProgress bar – PHP – Fórum – Programujte.com

 

lot
~ Anonymní uživatel
2 příspěvky
16. 6. 2015   #1
-
0
-

Zdravím,

chtěl jsem se zeptat jak by šel udělat progress bar k funkci exec().

Konkrétně bych potřeboval mýt na stránce odkaz na stažení mnoha souborů a adresářů, s tím že se teda asi budou muset zabalit třeba do .zip , což by bylo právě uděláno funkcí exec() a jelikož ta komprimace bude chvíli trvat tak bych tam chtěl dát nějaký ukazatel průběhu. Chtěl bych teda vědět jestli s tím nemáte někdo zkušenost.

Děkuji

Nahlásit jako SPAM
IP: 89.177.135.–
PiranhaGreg0
Stálý člen
16. 6. 2015   #2
-
0
-

No ono to není zrovna moc lehký. PHP skripty totiž by default dostanou požadavek, něco udělají a vrátí zpět odpověď. Tento skript bude dlouho něco dělat a nemůže tak odpovídat. Může jen někam ukládat svůj stav odkud si to bude JS vyzobávat. Navíc je u takovýchto řešení vždy potřeba nějaký token. Když bude např. 10 uživatelů najednou čekat až se něco zazipuje.

Další problém pak je, kdy ten zip ze serveru smažeš  . Nemáš totiž šanci zjistit, jestli si ho uživatel ještě stahuje (jedině že bys to servíroval přímo skrz PHP skript, což není dobrej nápad a hosting ti stejně na 99% tak dlouhý spojení utne).

Do třetice nesmíš zapomínat, že je to extrémně náchylný na DDOS. Požadavků na zazipování něčeho velkýho ti může přijít během sekundy mračna a server se z toho sesype.

Těch možný úskalí je tam každopádně ještě víc. Kdysi jsem to řešil a moc to nedopadlo  . Už si nevzpomínám odkud jsem čerpal. Google mi teď pošeptal akorát tohle.

Se samotným execem by moc problém být neměl. S vhodným přepínačem by ti měl archivační program na standardní výstup průběžně sdělovat aktuální stav...

Jinak pokud by nebyl problém s těmi dlouho běžícími skripty, existuje knihovna ZipStream-PHP, která archivuje přímo stream dat, kterej se stahuje. Řeší tak všechny výše uvedené problémy.

Nahlásit jako SPAM
IP: 109.81.210.–
lot
~ Anonymní uživatel
2 příspěvky
18. 6. 2015   #3
-
0
-

#2 PiranhaGreg
Děkuji zipstream je opravdu skvělé řešení funguje naprosto bezchybně.

Našel jsem ještě jednu takovou knihovnu https://github.com/Grandt/PHPZip je příjemější při rekurzivní komprimaci.

Nahlásit jako SPAM
IP: 89.177.135.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 23 hostů

Podobná vlákna

Progress bar (OpenGL) — založil gaben

Progress bar do PHP uploadu — založil Jirka

Progress bar vo webovej aplikácií ... — založil Anonymní uživatel

Jak otočit progress bar — založil Hula

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý