0
我想從代碼的其他部分安排工作。所以我創建了我自己的調度程序類,它將Illuminate\Console\Scheduling\Schedule::class
注入爲構造函數參數。調度程序類用app(..::class)
解決。在內核之外安排工作
一切工作正常,但在此實例上計劃的作業從未實際安排。
一個想法可能是將Illuminate\Console\Scheduling\Schedule
註冊爲單身人士。
例:
class JobA extends Job
{
private $taskList;
public function __construct(TaskList $taskList)
{
$this->taskList = $taskList;
}
public function handle()
{
$this->taskList->run();
}
}
class TaskList
{
private $tasks = [
TaskA::class,
TaskB::class,
...
];
public function run()
{
foreach($this->tasks as $task) {
// resolve $task and call it's own run method..
}
}
public function addToSchedule(Schedule $schedule)
{
$scheduler->job(new JobA($this))->everyFiveMinutes();
}
}
我注意到,一些調試似乎所有的工作都添加,但沒有執行,我必須進一步調查。 –
請記住,您的crontab執行'Illuminate \ Console \ Scheduling \ ScheduleRunCommand :: handle'方法。在執行此操作時,您的工作必須註冊 – Paras
請參閱我添加的示例。我有TaskScheduler(獲取Schedule實例)解析TaskList類並調用傳遞Schedule實例的addToSchedule。 TaskList將它自己添加到計劃中。那麼計劃JobA每5分鐘運行一次。 JobA在收到的TaskList實例上調用run方法。 –