habe darüber nochmal etwas länger nachgedacht und so ergab sich diese Funktion für den Download für Files. Ich bitte um Diskussion.
Zunächst: Ich bin ein Perlianer, nix PHP ;-)
Ein Problem deutest du in den Kommentaren bereits an:
if (false !== ($len = readfile($filename)))
Das kann bei größeren Dateien problematisch werden. Eine sequentielle Verarbeitung wäre besser.
$error = download_file ('testdatei.txt');
als Beweis dafür, dass die Fehlermeldung von readfile() wirklich eingefangen wird:
echo "Fehlermeldung: $error ENDE";
Solche Konstrukte halte ich für sehr unglücklich. download_file() beendet eigenständig die Verarbeitung, dass ist an zitierter Stelle nicht erkenntlich. Das ist natürlich eine Stilfrage, nicht der Funktionalität.