Spatie媒体库再生无法在生产中工作的工匠命令

时间:2019-02-27 09:33:27

标签: php laravel laravel-queue spatie

我将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);
}
}

因此,在“本地”中一切正常,但在服务器中,作业已处理,但未添加转换。 如果我从终端在服务器中运行命令,则它正在工作。 那么,我必须为这个问题做什么? TIA。

1 个答案:

答案 0 :(得分:1)

尝试在参数中添加--force。即做到

exec('php artisan medialibrary:regenerate --ids='.$this->mediaId --force')