我将 spatie 媒体库用于我的一个项目。要求是当上传的图像状态被批准时,然后生成该特定图像的转换。所以,我在 My Model 中为此编写代码是:
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 中一切正常,但在服务器中,作业已处理但未添加转换。如果我从终端在服务器中运行命令,那么它正在工作。那么,我必须为这个问题做些什么?TIA。