Laravel - 如何每分钟运行一个function/controller? (任务调度)
Laravel - How to run a function/controller every minute ? (Task Scheduling)
我有一个控制器方法,我希望每分钟 运行。我阅读了有关任务计划的 documentation,但它似乎只记录了命令。
有什么方法可以让我每分钟调用一个 route/controller method/script 吗?
<?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 和 external 类 等...
是的,您可以编写一个 shell 脚本来向您的控制器发出 CurlRequest,然后将 shell 脚本添加到 cron 作业。或者您可以使用 laravel 命令并通过请求调用控制器。
为什么不在命令中使用控制器内部的代码?
是的,正如文档所述,您可以调用任何函数。所以你可以这样做:
$schedule->call(function () {
$controller = new \App\Http\Controllers\ScriptController();
$controller->UpdateAcc();
})->everyMinute();
但是,从 Web 上下文中调用控制器是非常糟糕的做法,您应该创建一个 facade 或一个作业来执行您想要的代码。
我有一个控制器方法,我希望每分钟 运行。我阅读了有关任务计划的 documentation,但它似乎只记录了命令。
有什么方法可以让我每分钟调用一个 route/controller method/script 吗?
<?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 和 external 类 等...
是的,您可以编写一个 shell 脚本来向您的控制器发出 CurlRequest,然后将 shell 脚本添加到 cron 作业。或者您可以使用 laravel 命令并通过请求调用控制器。
为什么不在命令中使用控制器内部的代码?
是的,正如文档所述,您可以调用任何函数。所以你可以这样做:
$schedule->call(function () {
$controller = new \App\Http\Controllers\ScriptController();
$controller->UpdateAcc();
})->everyMinute();
但是,从 Web 上下文中调用控制器是非常糟糕的做法,您应该创建一个 facade 或一个作业来执行您想要的代码。