Почему laravel дергает Kernel при каждом запросе?

100
14 июня 2019, 03:00

Имеется в разработке небольшой сервис для статистики. Суть задачи на кроне - это съем позиций с яндекса.

По итогу: идем в класс Kernel, метод schedule и пишем следующее:

$schedule
        ->job(new RemoverPositions)
        ->withoutOverlapping()
        ->runInBackground()
        ->everyMinute()
        ->emailOutputTo("g7-99055@yandex.ru");

Код работника RemoverPositions:

class RemoverPositions implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
 * Create a new job instance.
 *
 * @return void
 */
public function __construct()
{
    $this->test("construct run");
}
public function test($value)
{
    //sleep(10);
    (new Test([
        "value" => $value
    ]))->save();
}
public function __invoke()
{
    $this->test("invoke");
}
/**
 * Execute the job.
 *
 * @return void
 */
public function handle()
{
    $this->test("handle");
}
}

В итоге раз в минуту и при каждом запросе дергает этот метод (срабатывает почему-то только конструктор). Как сделать так, что бы при обычных запросах (например открытие страницы) он этого не делал и всё же запускался в фоновом режиме?

P.S: В ларавеле совсем зеленый, как и в фраемворках в целом, сильно прошу не пинать)

//UPD: А так же при попытке выполнить консольно:

No scheduled commands are ready to run.

Answer 1

Такие вещи делаются через консольные artisan команды laravel:

php artisan make:command CommandName после чего автоматически будет создан класс app/Console/Commands/CommandName.php в нем задается сигнатура вызова и описание команды к примеру:

protected $signature = 'command:start';
protected $description = 'Моя тестовая команда';

В методе handle() логика работы программы.

public function handle()
{
    echo 'РАБОТАЕТ';
}

Далее в app/Console/Kernel.php необходимо зарегистрировать консольную команду следующим образом

protected $commands = [
            ...
            Commands\CommandName::class,
    ];

А в методе shedule() этого же класса

protected function schedule(Schedule $schedule)
{
    ...
    $schedule->command(Commands\CommandName::class)->everyMinute();
}

После чего команда запускается каждую минуту, а если набрать в консоли php artisan будет выведен список всех команд среди которых созданная нами команда command:start, которую можно запустить следующим образом php artisan command:start.

READ ALSO
Ajax reload captcha

Ajax reload captcha

В файле captchaphp я создаю gif изображения с помощью библиотеки GD и вывожу его в форме для отправки комментария к статье

104
Загрузка gif на стену группы

Загрузка gif на стену группы

есть код который публикует фото на стене, как его переделать под публикацию документа?

129
.htaccess RewriteCond

.htaccess RewriteCond

Это пропускает наmkv файл с пустым referer и site

98