Laravel - 如何每分钟运行一个功能/控制器? (任务调度)

时间:2017-09-06 12:26:07

标签: php laravel cron

https://laravel.com/docs/5.4/scheduling

嘿伙计,

我有一个控制器方法,我想每分钟运行一次。我阅读了任务调度的文档,但似乎只记录了命令。

有没有什么方法可以用它来每分钟调用路由/控制器方法/脚本?

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use DateTime;

use Illuminate\Support\Facades\DB;

use App\Acc;


class ScriptController extends Controller
{

    public function UpdateAcc()
    {

        $c = new Scripts\AccountA();

        $xoo = $c->getInfo();

        $z = json_decode($xoo,true);


        $data= new Acc();

        $data->price = $z["result"];

        $data->save();

    }




}

我需要使用DB外观和外部类等...因此无法将其添加到内核方法中。

由于

2 个答案:

答案 0 :(得分:1)

是的,你可以编写一个shell脚本,它将向你的控制器发出一个CurlRequest,并将shell脚本添加到一个cron作业中。或者您可以使用laravel命令并通过请求调用控制器。

为什么不在命令中使用控制器内的代码?

答案 1 :(得分:1)

是的,就像文档说明的那样,您可以调用任何函数。所以你可以做到以下几点:

$schedule->call(function () {
    $controller = new \App\Http\Controllers\ScriptController();
    $controller->UpdateAcc();
})->everyMinute();

然而,从其Web上下文调用控制器是非常糟糕的做法,您应该创建一个外观或执行所需代码的作业。