Мне нужно обработать несколько файлов изображений из каталога (каталог S3), процесс должен прочитать имя файла (идентификатор и тип), которое хранится в имени файла (001_4856_0-P-0-A_.jpg), этот файл сохраняется в момент запуска процесса (я использую cron и schedule, он отлично работает) цель процесса - сохранить информацию в базе данных.
У меня процесс работает, он отлично работает, но моя проблема в количестве файлов в каталоге, потому что каждая секунда добавляет намного больше файлов в каталог, время, затрачиваемое на процесс, составляет около 0,19 с для файла , но количество файлов огромно, добавляется около 15 000 в минуту, поэтому я думаю, что несколько одновременных процессов (примерно 10-40 раз) одного и того же исходного процесса могут сделать эту работу.
Мне нужен совет или идея,
Сначала узнайте, как запустить несколько процессов одновременно для одного исходного процесса.
Во-вторых, как получить только невыбранные имена файлов, потому что процесс принимает имена файлов с помощью:
$recibidos = Storage::disk('s3recibidos');
if(count($recibidos) <= 0)
{
$lognofile = ['Archivos' => 'No hay archivos para procesar'];
$orderLog->info('ImagesLog', $lognofile);
}else{
$files = $recibidos->files();
if(Image::count() == 0)
{
$last_record = 1;
} else{
$last_record = Image::latest('id')->pluck('id')->first()+1;
}
$i=$last_record;
$fotos_sin_info = 0;
foreach($files as $file)
{
$datos = explode('_',$file);
$tipos = str_replace('-','',$datos[2]);
Image::create([
'client_id' => $datos[0],
'tipo' => $tipos,
]);
$recibidos->move($file,'/procesar/'.$i.'.jpg');
$i++;
}
но я так и не понял, как извлечь только невыбранные.
Спасибо за ваши комментарии.