Download Status abfragen
Whorn
- php
Hi Folks!
Kennt jemand eine Möglichkeit, wie man unter PHP feststellen kann, ob ein Download gezogen (erfolgreich?) worden ist?
w
Hallo Whorn,
im Normalfall wird das nicht möglich sein, da Du immer einen Callback vom Client benötigst.
Du kannst allerdings ein PHP-Script schreiben, welches die Datei sendet. Als download-URL gibst Du dann das PHP-Script an.
Denk in diesem Falle daran, wenn möglich im Script die Header-Information Content-Length zu senden und den Content-Type ggf. zu ändern.
Gruß,
leider habe ich dann genausowenig eine Erfolgsmeldung oder einen Error. Gib es denn nicht vielleicht Tricks, um sich dem Ergebnis anzunähern: zB. wenn mann feststellen könnte, ob det Download abgebrochen wurde (erhalte ich zB diese Information, wenn der User während des Downloads diesen abbricht?).
gruß w
Den Erfolgsstatus kannst Du abrufen, wenn Du entweder den erfolgreichen Download (alle Daten gesendet) in einer DB speicherst (vorsicht bei Transaktionen), oder ihn in einer Datei loggst usw. .
Ansonsten könnte es wie folgt funktionieren:
Mit ignore_user_abort() sorgst Du für die vollständige Ausführung des Scriptes. Fehler beim Download können und müssen nun im Script angefangen werden, was Du mit connection_status() realisierst.
Also mit anderen Worten, sollte es VOM PRINZIP HER wie folgt aussehen:
ignore_user_abort(TRUE);
while (bytes_remaining()) {
send_some_bytes();
if (connection_status()!=NORMAL) {
log_failure();
exit();
}
}
log_success();
Ein anderer Ansatz wäre die Funktion register_shutdown_function(). Schau Dich da am besten mal in der PHP-Dokumentation unter "Verbindungssteuerung" nach.
Hi Jo!
Hab mal in meinen E- und P-Books nach "Verbindungssteuerung" gesucht und einiges gefunden. also werde ich erstmal dort nachforschen und dann die ergebnisse hier kundtun.
danke erstmal
w
Vielleicht funktioniert es ja so:
<?php
ini_set ("ignore_user_abort", "1"); // http://www.php.net/manual/de/function.ini-set.php
/* Download */
if ($HTTP_CONNECTION != 'Keep-Alive') { // http://www.php.net/manual/de/language.variables.predefined.php
/* Download abgebrochen */
}
?>
Ich habe leider keine Zeit das mal selbst zu testen.
PS: Eine Erfolgsmedung per eMail ist willkommen. ;)