PHP: я должен использовать sleep или cron для условного ожидания 5 минут? - PullRequest
0 голосов
/ 24 января 2019

У меня есть скрипт, который запускается при загрузке файлов.Однако я хотел бы выполнить этот сценарий только после загрузки всех файлов в пакете.Пакет, в данном случае, это все файлы, которые человек хочет загрузить в течение короткого промежутка времени, скажем, 5 минут.Невозможно отличить пакет от одной загрузки файла, кроме времени между отдельными загрузками.Причина, по которой я хочу реагировать на пакетные, а не отдельные файлы, заключается в том, чтобы сэкономить на обработке загруженных файлов.Задержка в 5 минут является приемлемой, поскольку цель обработки не зависит от времени.

Я знаю 2 способа, которые могут это сделать: с помощью функции sleep или cron.

При использовании функции сна скрипт 1 будет запускаться при загрузке и работать примерно так:

скрипт 1

if temp file exists
  delete temp file
  create temp file
else
  create temp file
  run script 2

скрипт 2

if temp file exists 
  if temp file was created < 5 minutes ago
    sleep(300) //5 minutes
  else
    delete the file
    process uploads

С помощью cron сценарии будут выглядеть примерно одинаково, просто функция сна будет заменена вызовом cron, вероятно, через стороннюю библиотеку, чтобы запланировать повторный запуск сценария через 5 минут.

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

Должен ли я использовать sleep или cron для достижения этой цели?Я открыт и для других предложений.

РЕДАКТИРОВАТЬ:

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

...