Я получаю различные результаты с некоторым кодом 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 (), но это, вероятно, не очень хорошая идея для веб-страниц, так как сценарий просто «виснет» там без обратной связи с пользователем (вывод в браузер).
Это, вероятно, будет приятнее: