Как у меня может быть команда cron-job, использующая php artisan? - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть некоторые проблемы с php artisan cron.

В настоящее время задачи находятся в App \ Console \ Commands \ task1.php
, а cron определен в App \ Console \ Kernel.php

Проблема в том, что задача не запускается.

Поэтому я попытался создать новую задачу, используя командную строку: php path/to/artisan make:command task2

и файл создан,но в App \ Commands вместо App \ Console \ Commands.

И при попытке перечислить существующую задачу cron с помощью artisan list, я получаю только:
vendor:publish Publish any publishable assets from vendor packages

Где следуетЯ поставил свои команды?
А где должен быть файл ядра?

В настоящее время файл Kernel.php:

<?php namespace App\Console;

use App\Commands\Task2;
use App\Console\Commands\Task1;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel {

    protected $commands = [
        Task1::class,
        Task2::class,
    ];

    protected function schedule(Schedule $schedule)
    {
        $schedule->command('task1')->daily();
        $schedule->command(Task2::class)->daily();
    }

}

Task1, созданный с помощью командной строки, в App \Папка Commands:

<?php namespace App\Commands;

use Illuminate\Console\Command;
use Illuminate\Contracts\Bus\SelfHandling;

class Task1 extends Command implements SelfHandling {

    protected $name = 'task1';

    protected $description = 'Task1 test ';

    public function handle()
    {}
}

Task2, в папке App \ Console \ Commands:

<?php namespace App\Console\Commands;

use Illuminate\Console\Command;

class Task2 extends Command {

    protected $name = 'task2';

    protected $description = 'task 2 test';

    public function handle()
    {}
}

Ответы [ 2 ]

2 голосов
/ 06 ноября 2019

Вам нужно $signature вместо $name

<?php namespace App\Commands;

use Illuminate\Console\Command;
use Illuminate\Contracts\Bus\SelfHandling;

class Task1 extends Command implements SelfHandling {

    protected $signature = 'task1';

    protected $description = 'Task1 test ';

    public function handle()
    {}
}
1 голос
/ 06 ноября 2019

Изменить в Kernel.php для

$schedule->command('task2')->daily();

удалить

use App\Commands\Task2;
use App\Console\Commands\Task1;

Изменить

protected $commands = [
    Console\Commands\Task1::class,
    Commands\Task2::class,
];

И добавить $signature в ваши команды

Использование artisan make:console (старый Laravel)

...