Как упорядочить события в PHP для загрузки файлов в Amazon S3 - PullRequest
1 голос
/ 31 марта 2009

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

Вот порядок, в котором я делаю вещи -

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

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

2) проверить $ результат

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

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

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

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

1 Ответ

4 голосов
/ 31 марта 2009

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

скрипта.

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

Это, вероятно, будет лучше:

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