Frage

Ich erhalte unterschiedliche Ergebnisse mit einigem PHP-Code, den ich geschrieben habe Dateien auf S3 laden dann eine EC2-Instanz aufrufen Aktionen auf der hochgeladenen Datei auszuführen.

Hier ist die Reihenfolge ich die Dinge tun -

1) verwenden S3 Klassendatei setzen

$result = s3 -> putObjectFile($uploadDIR, $bucket, $name, S3::ACL)

2) Check $ result

if($result == "1") {
//file made it to s3

3) verwenden cURL EC2-Instanz anzurufen und Aktion auf Datei in S3 durchführen

Ich verwende diese mit Video-Dateien, wenn ich eine kleine Videodatei laden es ok funktioniert (zB 3 MB), aber für eine größere Video (zB 80MB) muß nicht der Code scheint Vergangenheit Schritt 1. Die Datei verschoben wird erhalten bis s3 ok aber meine Vermutung ist, dass nach einer Weile PHP warten aufgibt, um zu sehen, ob $ result == 1 und so nicht den Rest des Codes auszuführen.

Was ist der beste Weg, um so etwas zu handhaben? Wie kann ich erkennen, dass die Datei auf S3 hochgeladen wurde und dann einige Code ausgeführt werden, wenn es hat?

War es hilfreich?

Lösung

Für große Dateien der Zeit, es zu laden dauert sie wahrscheinlich höher sein werden als die Skript max_execution_time .

könnten Sie verwenden nur die Funktion set_time_limit (), aber es ist immer noch wahrscheinlich keine gute Idee für Web-Seiten als das Skript würde „hängen“ einfach da, ohne Benutzer-Feedback (Ausgabe an den Browser).

Dies würde wahrscheinlich Schöneres:

  1. Verwendung set_time_limit (), so das Skript nicht stirbt.
  2. Speichern Sie die Dateinamen in einem temporären Speicherort (DB, Sitzung, usw.) und eine eindeutige ID für sie bekommen
  3. Ausgabe eine Seite mit einigen AJAX-Code (wiederholt) ein zweites Skript Abfrage für den Status der Datei (FINISHED, FAILED, UNDEFINIERT?)
  4. Auf der Original-Skript, warten Sie auf die Aktion die DB mit dem Ergebnis zu beenden und zu aktualisieren.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top