我正在尝试使用
通过dispatch()
方法执行作业
我已经完成queue
的配置,如'default' => env('QUEUE_DRIVER', 'redis')
。
app/Services
文件中调用dispatch()方法dispatch(新的SavePropertyImages($ pid_list));
以下是我在app/Jobs
中的工作文件:
namespace App\Jobs;
use App\Property;
use App\Services\CreaBase;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class SavePropertyImages implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $pid;
protected $creaBase;
public $timeout = 300;
public $tries = 1;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($pid)
{
$this->pid = $pid;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$this->creaBase = new CreaBase();
if (!$this->creaBase->isLogin){
$this->creaBase->init();
}
$this->creaBase->saveAllImages("Property", $this->pid);
}
}
当我调用dispatch(new SavePropertyImages($pid_list))
方法时,将调用作业的__construct()
方法,但不会调用handle()
函数。
您有什么想法吗?
答案 0 :(得分:1)
宾果,我得到了答案
我的handle()
函数没有调用。因为我设置了supervisor
但没有启动supervisor
进程,所以我的queue:work redis
进程没有启动并且我的工作没有分配给redis
服务器,并且我的工作没有执行的原因
首先,我启动supervisor
服务,而我的queue
正常运行。