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

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

Вопрос

Я получаю различные результаты с помощью некоторого 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 нормально, но я предполагаю, что через некоторое время PHP перестает ждать, чтобы увидеть, является ли $ result == 1, и поэтому не выполняет остальную часть кода.

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

Это было полезно?

Решение

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

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

Вероятно, так было бы приятнее:

  1. используйте set_time_limit(), чтобы скрипт не погиб.
  2. Сохраните имя файла во временном расположении (DB, session и т.д.) И получите для него уникальный идентификатор
  3. Выведите страницу с некоторым AJAX-кодом, чтобы (повторно) запросить второй скрипт о состоянии файла (ЗАВЕРШЕНО, СБОЙ, НЕ ОПРЕДЕЛЕНО?)
  4. В исходном скрипте дождитесь завершения действия и обновите базу данных результатом.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top