Ich habe eine ähnliche Lösung auf einer Datei-Hosting-Website implementiert.
Was Sie tun möchten, ist die Verwendung des Callbacks register_shutdown_function, mit dem Sie das Ende der Ausführung eines PHP-Skripts unabhängig vom Ergebnis erkennen können.
Dann möchten Sie Ihre Datei in einem nicht-Web zugänglichen Ort auf Ihrem Server (n) haben, und Ihre Downloads gehen durch php: Idee, dass Sie in der Lage sein zu verfolgen, wie viele Bytes wurden übergeben der Kunde.
Hier ist eine grundlegende Art und Weise der Umsetzung (zB :)
<?php
register_shutdown_function('shutdown', $args);
$file_name = 'file.ext';
$path_to_file = '/path/to/file';
$stat = @stat($path_to_file);
//Set headers
header('Content-Type: application/octet-stream');
header('Content-Length: '.$stat['size']);
header('Connection: close');
header('Content-disposition: attachment; filename='.$file_name);
//Get pointer to file
$fp = fopen('/path/to/file', 'rb');
fpassthru($fp);
function shutdown() {
$status = connection_status();
//A connection status of 0 indicates no premature end of script
if($status == 0){
//Do whatever to increment the counter for the file.
}
}
>?
Es gibt offensichtlich Möglichkeiten zu verbessern, so dass, wenn Sie weitere Informationen oder ein anderes Verhalten benötigen, lassen Sie es mich wissen!
Wie sollen diese Dateien groß sein? Kb? Mb? <100 Mb? – Strae
DK-Wamp sagte "Kann ich weitere Details zu diesem Thema haben? // Ich habe versucht, dieses Skript zu verwenden, aber nicht für mich funktioniert. :(// Ich weiß, dass ist ein altes Thema, aber ich hoffe finden Sie eine Lösung. " – Veedrac