Я пытаюсь сделать галерею изображений.Для этой цели я храню исходные изображения (сейчас около 7000, а в будущем их будет более 60 000) в пути хранения данных.Затем я выполняю задание, которое сохраняет путь и метаданные (размер изображения, разрешение, тип mimetype, ширину и высоту) в дБ.
Проблема в том, что он очень-очень медленный.
это мой контроллер:
public function startJob() {
// Start doing Jobs
CreateDirectories::withChain([
new RecordPaths,
// new OptimizeImage,
// new SendNotification,
])->dispatch()->delay(now()->addSeconds(3));
echo 'create directories and stored paths to database!';
}
В моем контроллере я выполняю некоторые задания.Сначала он создаст каталог, в котором я храню большие пальцы.После того, как это задание выполнено, следующее - RecordPaths к БД.
И вот проблема, это очень медленно (image / 2sec).
это моя работа:
class RecordPaths implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function handle()
{
$this->truncate();
$files = Storage::disk('gallery')->allFiles();
foreach($files as $file) {
$thumb = new Thumb;
$thumb->brand = explode("/", $file, 2)[0];
$thumb->name = array_slice(explode("/", $file),-1)[0];
$thumb->path = $file;
//
$thumb->size = $this->imageMetadata($file, 'fileSize');
$thumb->width = $this->imageMetadata($file, 'imageWidth');
$thumb->height = $this->imageMetadata($file, 'imageHeight');
$thumb->mime = $this->imageMetadata($file, 'mimeType');
//
$thumb->save();
}
}
public function truncate() {
return Thumb::truncate();
}
public function imageMetadata($file, $type) {
$metaData = [];
$metaData['mimeType'] = \Image::make(storage_path("app\public\gallery\\") . $file)->exif('MimeType');
$metaData['fileSize'] = \Image::make(storage_path("app\public\gallery\\") . $file)->exif('FileSize');
$metaData['imageWidth'] = \Image::make(storage_path("app\public\gallery\\") . $file)->exif('ExifImageWidth');
$metaData['imageHeight'] = \Image::make(storage_path("app\public\gallery\\") . $file)->exif('ExifImageLength');
return $metaData[$type];
}
}
$files = Storage::disk('gallery')->allFiles();
в методе handle возвращают это: 
и мой БД после некоторых вставок: 
Кто-нибудь знает, как его ускорить?