Laravel - 没有用户请求的调用方法

时间:2015-02-21 16:32:46

标签: php laravel

我有自己的库类,用于从外部网站收集数据(使用curl)。此类具有接收参数(例如URL,xpath)和方法updateDatabase的构造函数。如何将参数传递给构造函数并在app内部调用方法updadeDatabase?这种方法应该被解雇,例如每天两次没有用户请求(使用cron)所以我不希望在控制器中插入此代码并创建适当的路由。怎么做?

class Source
{
     public function __construct(Http $http, array $params)
     {
        ...
     }

     public function updateDatabase()
     {
        ...
     }
}

1 个答案:

答案 0 :(得分:0)

你最好的选择可能是创造一个工匠命令。这使您可以从命令行(或cron作业)在Laravel框架内运行代码。

可以找到创建工匠命令所需的所有信息here

基本上,在命令的fire()方法中,您可以执行以下操作:

public function fire() {
    $source = App::make('Source'); // or however you instantiate your class
    $source->updateDatabase();

    // output a message to the command line
    $this->info('All done.');
}

如果您需要传递参数和选项,您的命令也可以从命令行获取参数和选项。

上面链接的文档会告诉您需要知道的所有内容。