Я использую медиа-библиотеку Spatie для одного из моих проектов. Требование заключается в том, что когда статус загруженного изображения одобрен, генерируются конверсии этого конкретного изображения. Итак, я пишу код для этого в моей модели:
public function registerMediaConversions(Media $media = null)
{
$listingStatus = ListingStatus::where('type', Listing::ITEM_TYPE_PHOTOS)->where('item_id', $media->id)->where('status', self::STATUS_APPROVED)->whereNotNull('review_by')->first();
if ($listingStatus)
$this->registerBaseConversions(true);
}
и когда изображение получает одобрение, я отправляю задание для команды запуска.
$this->dispatch(new GenerateMediaCollection($mediaId));
Работа:
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Log;
class GenerateMediaCollection implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $mediaId;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($mediaId)
{
$this->mediaId = $mediaId;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
Log::info('generate Media collection');
exec('php artisan medialibrary:regenerate --ids='.$this->mediaId);
}
}
Итак, в Local все работает отлично, но на сервере задание обрабатывается, но конверсии не добавляются. если я запускаю команду на сервере с терминала, то она работает. Итак, что я должен сделать для этой проблемы? ТИА.
в лог-файлах ничего.
как вы обрабатываете свои рабочие места? куратором или?
используя Horizon на сервере Forge, добавьте Daemon.
проверьте системного пользователя, который управляет вашей файловой системой проекта, и пользователя, который управляет заданиями. они один и тот же системный пользователь?
простите, как проверить?
Давайте продолжить обсуждение в чате.






Попробуйте добавить --force к аргументам. т.е. сделай это
exec('php artisan medialibrary:regenerate --ids='.$this->mediaId --force')
Рад, что смог тебе помочь.
что вы видите в лог-файлах? ошибки или ничего?