Я работаю с 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.
Я споткнулся несколько месяцев назад с той же проблемой, пока не смог ее исправить.
Я использую laravel 5.2 и ядро вызывает мои драйверы следующим образом:
$schedule->call('App\Http\Controllers\MyController@MyAction')->everyMinute();
Я надеюсь, что это поможет кому-то еще;)
Для меня первая ошибка выглядит так, как будто нужно запустить composer update
, затем composer dump-autoload
,
Если это работает, вы также получите вторую ошибку, значение ошибки 2002 года:
Не удается подключиться к локальному серверу MySQL через сокет «(см. (Коды ошибок клиента и сообщения в документации MySQL).
Вам необходимо настроить конфигурацию базы данных в вашем .env
файл
Также теперь я тестирую более простую функцию для вставки новой валюты в базу данных. Вот код:
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
и сохранить в БД -> это не работает.
ХОРОШО. Я решил эту проблему. Проблема была с контейнером Docker Cron. Контейнер Cron не был связан с контейнером MySQL.
Спасибо за все ответы.