我使用 Laravel 任务调度,但是当我从控制器调用某个方法时遇到问题。
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 任务调度中调用 Controller 的方法是正确的。
4 回答
好。我解决了这个问题。问题出在 Docker Cron 容器上。 Cron 容器没有与 MySQL 容器链接。谢谢你的所有答案。
我几个月前偶然发现同样的问题,直到我能解决它。我使用 laravel 5.2 并且内核以这种方式调用我的驱动程序:
我希望这能帮助别人;)
对我来说,第一个错误看起来像你需要运行
composer update
,然后composer dump-autoload
。如果它工作,你也会得到第二个错误,2002 年的错误意思是:
您需要在
.env
文件中设置数据库配置现在我用更简单的功能测试在数据库中插入新货币。这是代码:
此功能来自
laravel/app/Console/Commands
。我打电话给Kernel > schedule()
。不行。当我插入简单的日志写入
handle()
函数时:这很有效。但是当我尝试从
Models
创建新对象并保存到 db - >这不起作用。