Ich habe in Laravel eine API erstellt, mit der Benutzer zip-Archive hochladen können, die Bilder enthalten.
Sobald ein Archiv hochgeladen wurde, wird es an S3 gesendet und dann von einem anderen Dienst zur Verarbeitung abgeholt.
Ich finde, dass PHP mit größeren Archiven sein Speicherlimit erreicht. Ich weiß, dass ich das Limit anheben könnte, aber das fühlt sich wie ein rutschiger Abhang an, besonders da ich mir vorstelle, dass mehrere Benutzer große Dateien hochladen.
Meine aktuelle Lösung bestand darin, komplett auf meinen Server zu verzichten und dem Client das direkte Hochladen auf S3 zu ermöglichen. Aber das fühlt sich sehr unsicher und anfällig für Spam / DDOSing an.
Ich denke, ich hoffe wirklich, dass es eine Diskussion darüber gibt, wie das elegant gehandhabt werden könnte.
Gibt es eine Sprache, die für diese Art der Verarbeitung / Gleichzeitigkeit besser geeignet ist? Ich könnte den Upload-Prozess leicht zu etwas anderem machen.
Sind meine Probleme mit S3 unbegründet? Ich weiß, dass jede Anforderung signiert werden muss, aber die generierten Token wiederverwendbar sind, so dass sie ausnutzbar sind.
Online-Ressourcen sprechen über NGINX als eine bessere Lösung, da es ein Upload-Modul hat, das Uploads direkt in Datei schreibt, da Apache versucht, viel im Speicher zu tun (nicht 100% sicher).
>Ich bin ziemlich unklar über den gesamten PHP-Upload-Prozess, wenn ich ehrlich bin. Wird eine Anfrage direkt im Speicher abgelegt? d. h. Zehn 50 MB-Uploads würden eine Speicherbegrenzungsausnahme für meine 500 MB RAM verursachen
Danke für die Diskussion. Nachdem ich den PHP-Post / Upload-Prozess betrachtet hatte, klärte er auf, wie die Dinge ein wenig funktionierten.
Durch die Aktualisierung des SDK wurden diese anfänglichen Speicherbeschränkungsprobleme behoben.
Natürlich schaue ich immer noch auf das Problem der Parallelität, aber ich glaube, das ist eher ein Apache / Nginx / Server Config / Spezifikation Optimierungsproblem als meine Sprache.
Danke allen!
Tags und Links php nginx amazon-s3 file-upload laravel