PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zwischenstatus von wget download auf website abfragen



Twisterking
16.02.09, 21:06
Hi all!

Gleich vorweg:
Bin neu hier ... Also für etwaige Anfängerfehler bitte ich zu entschuldigen! :)

Habe auf meinem VServer ein PHP Script laufen, was u.a. per shell_exec einen wget download einer etwas größeren Datei startet .... aufgrund etwas langsamen Speeds des DL Servers kann der Download schon mal 30-60Sek dauern!
Die Sache ist nun die, dass ich anch irgendeiner Möglichkeit suche, immer wieder einen zwischenstatus an die PHP zu returnen um eine Progressbar oder dergleich darstellen zu können!
Nehme nun aber eign. ejtzt schon an dass das mit PHP wohl nciht möglich sein wird sondern wohl eher mit Ajax oder dergleichen!

Nun .. könnt ihr mir helfen wie man das möglich machen könnte?
Kurz gesagt: Downloadfortschritt eines wget Downloads auf einer Webpage darstellen!

Hoffe ihr könnt mir helfen!

mfg
Twist

marce
16.02.09, 21:17
was funktionieren könnte:
- Logfile schreiben lassen und darin den aktuellen %-Wert auslesen
- Größe der heruntergeladenen Datei auslesen
- nicht mit shellexec sondern über php direkt herunterladen und die darin enthaltenen Funktionen verwenden

zyrusthc
16.02.09, 21:33
Vielleicht hilfts:
http://www.tutorials.de/forum/php/252100-wget-downloadscript.html


Greeez Oli

Twisterking
16.02.09, 23:35
Direkt über PHP downloaden geht leider nicht weil nachher noch andre Sachen ind er shell ausgeführt werden!
Und Größe der Datei bzw. LogFile auslesen müsste ich wohl auch irgendwie umgehen, weil während der shell_exec Befehl in PHP ausgeführt wird PHP natürlich keine anderen Anfragen annimmt bzw. Sachen auf die Webpage ausgibt!
Deshalb bräuchte ich eben irgendeinen Umweg mit AJAX oder dergleichen!
Nur da bin ich etwas ratlos! :(

zyrusthc
17.02.09, 01:38
Schau dir mal http://de.php.net/manual/de/function.passthru.php an.

Greeez Oli

Twisterking
18.02.09, 14:16
Gut habe passthru jetzt probiert und stehe wieder vor demselben Problem! :(
Ihr kennt ja alle sicher den "Fortschritssbalken" von wget in der Shell!
Den bekomme ich in Punkteform auch dargestellt in PHP, allerdings eben erst am Ende und dann in folgender Form:
http://www.imagecrate.de/upload/87659_wgetphp.png (http://www.imagecrate.de/view.php?id=h3n4t3)

Was natürlich shice is weil ich damit nix anfange!
Also die PHP Page refreshed sich nciht zwischendurch!
Deshlab das Problem dass ich den Balekn irgendwie on the fly aktualisieren muss!
Nur kA wie ich das machen soll ....! -.-

marce
18.02.09, 14:21
schick den Aufruf in der Shell-Exec in den Hintergrund und dann kannst Du "vorne" weiter lustig rumphpern...

Twisterking
18.02.09, 14:35
Hört sich interessant an!
Weiß nur leider nicht was du meinst!
Bitte erklär mir das mal genauer! :)

marce
18.02.09, 14:36
Als Admin eines vServer sollte man eigentlich wissen, wie man in der Shell etwas in den Hintergrund schickt.

Twisterking
18.02.09, 14:38
was soll ich dazu jetzt sagen? ;)
Man muss auch mal klein anfangen .. habe einige Wochen damit verbracht es mal zu schaffen lokal in ner VM ein Debian inkl. allem drum und dran zum laufen zu bringen und hab mir nun halt doch mal nen VServer zugelegt!
Deshlab nochmal die Bitte:
Erklär mir das mal genauer!

marce
18.02.09, 14:41
http://tinyurl.com/d7b5rd

zyrusthc
18.02.09, 14:43
Entweder mit "&" am Ende oder screen oder nohup oder bg oder oder oder
Google ist dein Freund!

Greeez Oli

Twisterking
18.02.09, 14:49
Sehr hilfreich danke! ;)
Gut also nach bissl googlen weiß ich nun dass & das ganze in den background schickt!
Geholfen hats jetzt leider nicht viel weil PHP wieder abwartet! -.-
Würds vll helfen den wget befehl nicht direkt über shell_exec() auszuführen sondern eher über ein script?!

marce
18.02.09, 14:50
vielleicht.

zyrusthc
18.02.09, 14:57
Nimm doch screen so kannste in php noch den Status der Session abfragen!

Greeez Oli

Twisterking
18.02.09, 15:03
Gut gut eine Frage noch ...

Wenn ich nun 2 Befehle in dieses Script einbaue, wobei aber der eine auf den anderen aufbaut (zB zuerst wget und dann cp) ... wie bringe ich das Script dazu dass es

1.) beide Befehle im Hintergrund ausführt (wohl einfach bei beiden befehlen hinten "&" anhängen oder?)
2.) dass der "cp" Befehle erst ausgeführt wird, wenn der "wget" Befehle erfolgreich abgeschlossen wurde?

Das würde mir schon sehr weiterhelfen! :)

Danke im Voraus!

PS: Habe natürlich vorher gegoogelt, leider aber nix wikrlich tolles gefunden!

EDIT:

Stehe nun noch vor einem ganz anderen problem!
Die URL für den wget download ist leider so kompliziert dass ich sie unter "" setzen muss!
Nur irgendwie funktioniert das ganze nicht so ganz!
Schreibe ich im Shell Script oben VAR = "<URL>" und setzte im wget Befehl VAR mittels $VAR entsprechend ein funktioniert alles perfekt!
Übergebe ich dem Script die URL aber über PHP mittels "$1", funktioniert es nciht mehr und wget spuckt mir einen 404 Error aus!
Woran kanns liegen? ^^

zyrusthc
18.02.09, 15:12
zu 1.) Ja
zu 2.) in dem Du die Ausgabe von wget in eine Datei schreibst und diese mit einer php Schleife abfragst nach zb. "100%" dann den cp Befehl startet.

PS: Dein Problem währe hier (http://mrunix.de/) besser aufgehoben.


Greeez Oli

Twisterking
18.02.09, 15:23
Danke für den Forums Tipp, dann werd ich mich dort mal melden!

Roger Wilco
18.02.09, 19:16
Alles tolle Tipps hier, nur auf http://php.net/curl hat bislang niemand verwiesen...

marce
18.02.09, 19:31
- nicht mit shellexec sondern über php direkt herunterladen und die darin enthaltenen Funktionen verwenden
doch, hat man. Nur ohne Link :-)

Aber der TE will es nicht.