【问题标题】:spatie media library regenerate artisan command not working in job on productionspatie 媒体库 regenerate artisan 命令在生产工作中不起作用
【发布时间】:2019-02-27 09:33:27
【问题描述】:

我将 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。

【问题讨论】:

  • 您在日志文件中看到了什么?有什么错误还是什么都没有?
  • 在日志文件中什么都没有。
  • 你如何处理你的工作?由主管还是?
  • 在forge服务器中使用horizo​​n添加守护进程。
  • 检查管理项目文件系统的系统用户和管理作业的用户。他们是同一个系统用户吗?

标签: php laravel laravel-queue laravel-medialibrary


【解决方案1】:

尝试将 --force 添加到参数中。 IE。实现它

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

【讨论】:

  • 很高兴,我可以帮助你。
猜你喜欢
  • 1970-01-01
  • 2016-08-19
  • 2021-05-10
  • 2020-10-27
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 2019-08-18
相关资源
最近更新 更多