![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/rentpix.corals.io/Corals/modules/RentPix/Jobs/ |
<?php namespace Corals\Modules\RentPix\Jobs; use Corals\Modules\RentPix\Models\Inspection; use FFMpeg\FFProbe; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Storage; use Pawlox\VideoThumbnail\VideoThumbnail; use Spatie\MediaLibrary\Conversions\FileManipulator; use Spatie\MediaLibrary\MediaCollections\Models\Media; class InspectionImagesUploadedJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public int $timeout = 3600; /** * @param Inspection $inspection */ public function __construct(public Inspection $inspection) { } public function handle() { logger(__METHOD__.": STARTED [inspection: {$this->inspection->id}]"); /** @var \Spatie\MediaLibrary\Conversions\FileManipulator $fileManipulator */ $fileManipulator = app(FileManipulator::class); try { $this->inspection->media() ->where('mime_type', 'like', '%image%') ->each(fn ($media) => $fileManipulator->createDerivedFiles($media)); $this->inspection->media() ->where('mime_type', 'like', '%video%') ->each(fn ($media) => $this->generateVideoThumb($media)); } catch (\Exception $exception) { report($exception); logger(__METHOD__.": EXCEPTION [inspection: {$this->inspection->id}] | ".$exception->getMessage()); } logger(__METHOD__.": ENDED [inspection: {$this->inspection->id}]"); } public function generateVideoThumb(Media $media) { $url = getMediaPublicURL($media); $mediaPathInfo = pathinfo($media->getPath()); $ffprobe = FFProbe::create(); $duration = $ffprobe->format($url) ->get('duration'); (new VideoThumbnail())->createThumbnail( $url, Storage::disk('tmp')->getConfig()['root'], $mediaPathInfo['filename'].'.jpg', floor($duration / 2), 300, 300, ); $content = Storage::disk('tmp')->get($mediaPathInfo['filename'].'.jpg'); $path = $mediaPathInfo['dirname'].'/conversions/'.$mediaPathInfo['filename'].'-thumb.jpg'; Storage::disk($media->disk)->put($path, $content); Storage::disk('tmp')->delete($mediaPathInfo['filename'].'.jpg'); $media->markAsConversionGenerated('thumb'); } }