Comment la séquence des événements en PHP pour télécharger des fichiers sur Amazon S3

StackOverflow https://stackoverflow.com/questions/701667

Question

Je reçois des résultats variés avec un code PHP Je l'ai écrit pour télécharger des fichiers sur S3 puis appeler une instance EC2 pour effectuer des actions sur le fichier téléchargé.

Voici l'ordre des choses que je fais -

1) utiliser la classe S3 pour mettre le fichier

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

2) chèque $ result

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

3) utiliser cURL pour appeler par exemple EC2 et d'effectuer une action sur le fichier dans S3

J'utilise cela avec des fichiers vidéo, quand je télécharge un petit fichier vidéo, il fonctionne bien (par exemple 3MB), mais pour la vidéo plus grande (par exemple 80Mo) le code ne marche pas semble avoir étape passé 1. Le fichier est déplacé vers s3 ok mais je pense que, après un certain temps PHP donne à attendre pour voir si le résultat $ == 1 et donc n'exécute pas le reste du code.

Quelle est la meilleure façon de gérer quelque chose comme ça? Comment puis-je détecter que le fichier a été téléchargé sur S3 puis exécutez un code quand il a?

Était-ce utile?

La solution

Pour les grands fichiers le temps qu'il faut pour les télécharger seront probablement plus élevés que du script max_execution_time .

Vous pouvez simplement utiliser la set_time_limit () fonction, mais il est encore probablement pas une bonne idée pour les pages Web que le script serait tout simplement « accrocher » il sans commentaires des utilisateurs (sortie au navigateur).

Ce serait sans doute plus agréable:

  1. utilisation set_time_limit () de sorte que le script ne meurt pas.
  2. Conservez le nom du fichier dans un emplacement temporaire (DB, session, etc.) et d'obtenir un identifiant unique pour elle
  3. Sortie une page avec un code AJAX (à plusieurs reprises) interroger un second script pour l'état du fichier (FINI, ECHEC, UNDEFINED?)
  4. Sur le script original, attendez l'action pour terminer et mettre à jour la base de données avec le résultat.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top