Как упорядочить события в PHP для загрузки файлов на amazon S3

Я получаю различные результаты с некоторым кодом PHP, который я написал для загрузки файлов на S3, затем вызывает экземпляр EC2 для выполнения действий над загруженным файлом.

Вот порядок, который я делаю –

1) использовать класс S3 для размещения файла

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

2) проверить $ result

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

3) используйте cURL для вызова экземпляра EC2 и выполнения действия в файле в S3

Я использую это с видеофайлами, когда я загружаю небольшой видеофайл, который работает нормально (например, 3 МБ), но для более крупного видео (например, 80 МБ) код, похоже, не прошел за шагом 1. Файл перемещен в s3 ok, но моя догадка заключается в том, что через некоторое время PHP отказывается ждать, если $ result == 1 и, следовательно, не выполнит остальную часть кода.

Каков наилучший способ справиться с чем-то подобным? Как я могу обнаружить, что файл был загружен на S3, а затем запустить некоторый код, когда он есть?

Для больших файлов время, необходимое для их загрузки, вероятно, будет выше, чем max_execution_time скрипта.

Вы можете просто использовать функцию set_time_limit (), но это, вероятно, не очень хорошая идея для веб-страниц, так как сценарий просто «виснет» там без обратной связи с пользователем (вывод в браузер).

Это, вероятно, будет приятнее:

  1. используйте set_time_limit (), чтобы скрипт не умирал.
  2. Храните имя файла во временном месте (DB, session и т. Д.) И получите для него уникальный идентификатор
  3. Выведите страницу с некоторым кодом AJAX, чтобы (повторно) запросить второй скрипт для статуса файла (ЗАВЕРШЕНО, НЕИСПРАВНО, НЕ УКАЗАН?)
  4. В исходном скрипте дождитесь завершения действия и обновите DB с результатом.