Ich habe dieses Dilemma viele Male - und ich möchte einmal und für alle die Antwort in meinem Kopf anpassen.Php - PRO und CON für Streaming VS. schreiben/cachen
Während Dateien mit PHP erstellen, wie ZIP, PDF oder andere, wird PHP Sie zwei operative Optionen geben:
Schreiben auf die Platte.
Stream mit Headern zum direkten Download.
Dinge zu beachten sind:
- Security (die übliche)
- CPU und dienen Zeit für Datei
- Dateiintegrität
- Datei-Updates
- andere Überlegung, dass ich nicht aufgelistet.
Ein praktisches Beispiel:
Lasst uns sagen, dass ich eine Website haben eine gepackte Zip mit Bildern zum Download bereit.
Wenn ich den zip streame - es wird offensichtlich CPU (und Zeit) kosten.
Wenn ich auf die Festplatte schreiben - es Sicherheitsproblem sein kann (jemand unter der Annahme kann „kriechen“ die Seite, die Zip-Ordner oder Dateien finden irgendwie, und Bulk-Download alle)
Wenn ich auf die Festplatte zu schreiben, werde ich muss auch irgendwie überprüfen, ob die Dateien innerhalb der Zip aktualisiert werden sollen oder nicht, außerdem muss ich die Integrität der Datei überprüfen.
Wie auch immer - ich würde gerne hören, was die Leute darüber zu sagen haben, welche ist die bevorzugte Methode unter welchen Umständen, was sind Best Practices dafür oder andere Erkenntnisse.
Sie sehen - ich lerne schon etwas - ich war dumm genug, um interne CRC zu verwenden - die Datei muss jedes Mal CPU kostet zu öffnen. Verwenden Sie einen Hash, um an den Dateinamen anzuhängen, macht es wirtschaftlicher, denke ich. Kannst du etwas mehr zum "Do it Right" -Teil bezüglich Sicherheit sagen - welche Überlegung sollte ich haben? –
Machen Sie die Datei einfach nicht öffentlich zugänglich. Nur weil Sie es auf die Festplatte schreiben, bedeutet das nicht, dass es jemand herunterladen kann. Das ist nur dann der Fall, wenn Sie es auf Diskette * im öffentlich zugänglichen Webroot * schreiben. Sie können es einfach auf die Festplatte außerhalb des Webroot schreiben, Problem gelöst. – deceze
Dies gilt unter der Bedingung, dass jeder mit dem richtigen Zugriff ALLE Dateien frei herunterladen kann. Aber was, wenn ich den Download auf Datei-zu-Datei-Basis einschränken muss? Wenn Sie nur den ONE-Link für die Berechtigung verwenden, wird dieses Problem nicht gelöst (es sei denn, mir fehlt etwas) –