Контроллер вызовов Laravel Scheduling

Я работаю с Laravel Task Scheduling, но у меня возникает проблема, когда я вызываю какой-то метод из моего контроллера.

protected function schedule(Schedule $schedule)
{
$schedule->call('UserController@deleteInactiveUsers')->everyMinute();
//$schedule->call('App\Http\Controllers\UserController@deleteInactiveUsers')->everyMinute();
}

Когда я звоню с некомментированной строкой, я получаю эту ошибку:

[ReflectionException]
Class RecurrenceInvoiceController does not exist

и затем я вставляю полный путь к пространству имен, а затем получаю эту ошибку:

[PDOException] SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

А также

[ErrorException] PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known

В чем проблема? Какой способ является правильным для вызова метода из Контроллера из Laravel Task Scheduling.

8

Решение

Я споткнулся несколько месяцев назад с той же проблемой, пока не смог ее исправить.
Я использую laravel 5.2 и ядро ​​вызывает мои драйверы следующим образом:

$schedule->call('App\Http\Controllers\MyController@MyAction')->everyMinute();

Я надеюсь, что это поможет кому-то еще;)

11

Другие решения

Для меня первая ошибка выглядит так, как будто нужно запустить composer update, затем composer dump-autoload,

Если это работает, вы также получите вторую ошибку, значение ошибки 2002 года:

Не удается подключиться к локальному серверу MySQL через сокет «(см. (Коды ошибок клиента и сообщения в документации MySQL).

Вам необходимо настроить конфигурацию базы данных в вашем .env файл

1

Также теперь я тестирую более простую функцию для вставки новой валюты в базу данных. Вот код:

public function handle()
{
$currency                = new Currency();
$currency->currency_name = 'EUR';
$currency->save();

$this->info('New currency is successfully generated!');
}

Эта функция от laravel/app/Console/Commands, Я звоню из Kernel > schedule(), Не работа.

Когда я вставляю простой журнал, пишите в handle() функция как:

File::put(base_path() . '/storage/logs/test_logs.txt', 'Test log ' . Carbon::now()->format('Y-m-d H:i:s') . PHP_EOL);

это работает. Но когда я пытаюсь создать новый объект из Models и сохранить в БД -> это не работает.

0

ХОРОШО. Я решил эту проблему. Проблема была с контейнером Docker Cron. Контейнер Cron не был связан с контейнером MySQL.
Спасибо за все ответы.

0
По вопросам рекламы [email protected]