php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.06.2010, 16:42  
Neuer Benutzer
 
Registriert seit: 20.06.2010
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Domi_bas befindet sich auf einem aufstrebenden Ast
Standard prüfen ob Datei gedownloaded wird

Hallo, heute schon mein 2. Beitrag aber ich find in Google oder hier nichts vergleichbares.

Ich möchte prüfen ob eine Datei gerade gedownloaded / heruntergeladen wird.

habe es mit is_ writeable versucht bis ich gelesen habe, dass die Datei die geladen wird angeblich nicht die ist die auf dem Server liegt, sondern nur eine Kopie.

Gibt es eine Möglichkeit die datei zu prüfen oder evtl. auch per IP oder was weiß ich, einen aktiven Download zu erkennen???
__________________
Wer einen Fehler findet darf ihn behalten.
Domi_bas ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.06.2010, 16:47  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Nicht mit PHP. Ich weiß nicht ob es da irgend welche Extensions für deinen Webserver gibt aber wenn dann müsstest du dort ansetzen, denn vom Dateitransfer bekommt PHP nichts mit.
Flor1an ist offline  
Alt 20.06.2010, 17:14  
Neuer Benutzer
 
Registriert seit: 20.06.2010
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Domi_bas befindet sich auf einem aufstrebenden Ast
Standard

Hm...

hab in diesem Forum das hier gefunden:
PHP-Code:
 $limit 10// Hier gibt man ein, wie viel Kilobyte pro Sekunde max. geladen werden dürfen. 
    
$verzeichnis $pfad2// Downloadverzeichnis 
    
$rundeslimit round($limit*1024); // Kilobytewert in Byte umrechnen 
     
    
header('Cache-control: private'); 
    
header('Content-type: application/octetstream');  
    
header('Content-Length: '.filesize($verzeichnis.'/'.$_GET['file_to_download'])); 
    
header('Content-Disposition: attachment; filename='.$_GET['file_to_download']);  
    
// Attachementheader senden 
     
    
flush(); 
    
$fd fopen($verzeichnis.'/'.$_GET['file_to_download'], 'r'); 
    while(!
feof($fd))  
    { 
        echo 
fread($fd$rundeslimit); 
        
flush(); 
        
sleep(1); 
    } 
    
// Die Speed-Sperre wird geschaltet 
es ist ein script um die Downloadgeschwindikeit zu reduzieren und den Download zu starten. Kurz davor kopiere ich mit copy() die Datei in ein Tempverzeichnis und setze einen Keks um einen 2. Download zu verhindern,
funktioniert bei mir auch. Dann habe ich versucht es mit:
PHP-Code:
if(feof($fd)) {
        if(
unlink($verzeichnis.'/'.$_GET['file_to_download'])) {
            
setcookie('download''Keine');
        }
    }
    
fclose ($fd); 
für meine Bedürfnisse zu erweitern. Hierbei sollte gewartet werden bis der (ich glaub) "Dateizeiger" am Ende der Datei ist und dann die Datei aus tmp löschen, und den Keks setzen der sagt kein Download mehr da, der nächste kann starten.
__________________
Wer einen Fehler findet darf ihn behalten.
Domi_bas ist offline  
Alt 20.06.2010, 17:17  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Der Benutzer kann aber den Download auch vorher abbrechen. Das PHP Skript aber trotzdem weiter rechnen!
Flor1an ist offline  
Alt 20.06.2010, 17:23  
Neuer Benutzer
 
Registriert seit: 20.06.2010
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Domi_bas befindet sich auf einem aufstrebenden Ast
Standard

Stimmt schon, das ist dann aber sin Problem. Ich möchte ja, dass die Datei nach dem Download wieder aus dem temp gelöscht wird, damit sie nicht nochmal oder von andern geladen werden kann. Wie kann ich es sonst machen??

Ich versteh auch nicht warum er bei while(!feof($fd)) wartet bis die datei geladen ist oder jemand abbricht und bei if(feof($fd)) nix macht.
__________________
Wer einen Fehler findet darf ihn behalten.
Domi_bas ist offline  
Alt 20.06.2010, 17:29  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Was du da versuchst ist echt nicht das beste mit PHP. Da solltest du auf andere Techniken setzen, ansonsten müsstest du irgendwo speichern welche Dateien du in den tmp Ordner kopiert hast und diese dann nach so und so viel Minuten per Cronjob löschen oder sowas. Also mit PHP bekommst du da keine saubere Lösung hin!
Flor1an ist offline  
Alt 20.06.2010, 17:35  
Neuer Benutzer
 
Registriert seit: 20.06.2010
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Domi_bas befindet sich auf einem aufstrebenden Ast
Standard

Ich will dich ja echt nicht nerven, im Gegenteil!! Bin froh, dass jemand so schnell antwortet. Gemerkt wird das im Cookie, und den Cronjob spar ich mir indem ich nach dem Cookie schau wenn der User irgend etwas macht. Hab aber doch langsam das Gefühl, dass es nix mehr wird. Evtl. schaut nochmal jemand in den nächsten Tagen vorbei der mir wenigstens sagen kann warum das mit dem feof nicht klappt.

Danke trotzdem Flor1an.
__________________
Wer einen Fehler findet darf ihn behalten.
Domi_bas ist offline  
Alt 20.06.2010, 17:42  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wo rufst du denn dein if (feof(...)) auf?
Flor1an ist offline  
Alt 20.06.2010, 17:43  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Domi_bas Beitrag anzeigen
Evtl. schaut nochmal jemand in den nächsten Tagen vorbei der mir wenigstens sagen kann warum das mit dem feof nicht klappt.
Liefere bitte erst mal eine nachvollziehbare Problembeschreibung - „klappt nicht“ ist keine.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline  
Alt 20.06.2010, 18:34  
Neuer Benutzer
 
Registriert seit: 20.06.2010
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Domi_bas befindet sich auf einem aufstrebenden Ast
Standard

also hier ist der komplette Quelltext
PHP-Code:
<?php

//Da sind die DAteien versteckt
$pfad1 $_SERVER['DOCUMENT_ROOT'].'/include/data/';

//Cookie verhindert, dass noch ein Download gestartet wird
setcookie('download'$pfad.'/'.$_GET['file_to_download']);

// Wenn ein Download angefordert wird
if(isset($_GET['file_to_download'])) {

    
//TempFolder machen
    
$temp_ip str_replace('.''-'$_SERVER['REMOTE_ADDR']);
    
$tempname 'tmp_'.$temp_ip.'_'.date('h-i-s'time());
    
mkdir($tempname0777);
    
$pfad2 $_SERVER['DOCUMENT_ROOT'].'/include/'.$tempname;    
    
    
// Datei in TempFolder kopieren
    
copy($pfad1.'/'.$_GET['file_to_download'], $pfad2.'/'.$_GET['file_to_download']);

    
// für Speedbremse
    
$limit 30// Hier gibt man ein, wie viel Kilobyte pro Sekunde max. geladen werden dürfen. 
    
$rundeslimit round($limit*1024); // Kilobytewert in Byte umrechnen 
    
    // Attachementheader senden  
    
header('Cache-control: private'); 
    
header('Content-type: application/octetstream');  
    
header('Content-Length: '.filesize($pfad2.'/'.$_GET['file_to_download'])); 
    
header('Content-Disposition: attachment; filename='.$_GET['file_to_download']);  
   
    
// Speedbremse einschalten
    
flush(); 
    
$fd fopen($pfad2.'/'.$_GET['file_to_download'], 'r+'); 
    
    while(!
feof($fd))  
    { 
        echo 
fread($fd$rundeslimit); 
        
flush(); 
        
sleep(1); 
    } 
    
    
//Wenn die Datei übertragen ist soll TempFolder gelöscht werden
    
if(feof($fd)) {
    
unlink(pfad2);
    
    
// und Cookie machen um den nächsten Download frei zu geben
    
setcookie('download''Keine');
    }
    
    
// Handle schließen
    
fclose ($fd);
}        

    
    
?>
Die Datei wird von einem anderen skript gewählt und per "download.php?file_to_download=test.txt aufgerufen"

Das geht nicht bezieht sich darauf, dass das Verzeichniss nach dem Download noch da ist und mein Cookie "download" nicht auf "Keine" steht.

Bevor Fragen kommen.... Der Download an sich mit der eingestellten Geschwindikeit und das erstellen meines Temp Verzeichnisses funzt ganz gut!!
__________________
Wer einen Fehler findet darf ihn behalten.

Geändert von Domi_bas (20.06.2010 um 18:40 Uhr).
Domi_bas ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
In PHP an einer bestimmten Position einer Datei schreiben. el_vital PHP Tipps 2010 4 06.06.2010 15:32
Datei per iframe einbinden - aber mit Parametern! mooonikaaa PHP Tipps 2009 2 05.12.2009 13:50
Upload script datei type falsch erkannt Marti95. PHP Tipps 2009 27 14.09.2009 15:32
php Variable in css datei Sascha321 PHP Tipps 2009 8 13.07.2009 02:29
[Erledigt] css datei in css datei einbinden xstefxanx HTML, Usability und Barrierefreiheit 10 21.03.2009 20:11
Prüfen, ob eine Datei gesperrt ist ggfan PHP Tipps 2006 9 11.03.2006 17:08
Datei auf Existenz prüfen PHP Tipps 2007 4 11.11.2005 11:42
Downloadscript und dauernd 0kb Datei! Hiiiiilfe! PHP Tipps 2005-2 26 17.09.2005 11:32
Datei mehrmals öffnen und schließen in einem Skript PHP Tipps 2005-2 14 14.07.2005 18:12
datei auf änderung prüfen LP PHP Tipps 2005-2 6 01.07.2005 15:39
Ordner Struktur auslesen bestimmte datei finden .... silverghost PHP Tipps 2005 3 24.05.2005 13:55
prüfen ob eine datei auf einem anderen server besteht. PHP Tipps 2005 13 10.03.2005 08:33
prüfen ob eine datei besteht. PHP Tipps 2005 1 08.03.2005 23:06
existenz einer datei auf einem anderen server prüfen PHP Tipps 2004-2 2 19.11.2004 09:05
Wie kann ich eine PHP Datei in eine HTML Datei umwandeln PHP Tipps 2004 2 12.08.2004 18:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php download feststellen, prüfen ob datei heruntergeladen wurde, php prüfen ob download erfolgreich, Überprüfen ob download läuft, download php überprüfen, php prüfen ob download, php prüfen ob datei geladen, php files werden gedownloaded, php feof flush, php datei downloaden und überprüfen, php überprüfen download erfolgreich, php prüfen ob wirklich download, kontrollieren ob download startet, php prüfen ob download läuft, prüfen mit php ob eine datei downgeload wird, prüfen ob ein download läuft ein download wie, php ermitteln ob datei kopiert wird, php prüfen ob datei download, php flush prüfen, download prüfen php

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:05 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum