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

3

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

是否有办法使用它来每分钟调用一个路由/控制器方法/脚本?

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
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 facades外部类 等等...

2个回答

8

是的,就像文档所述,您可以调用任何函数。因此,您可以执行以下操作:

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

然而,将控制器从其网络环境中调用是非常不好的做法,您应创建一个facade或作业执行所需的代码。

1

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接