如何在不中断 laravel 中的执行流程的情况下延迟执行一段代码?
How I can delay a piece of code to be executed without breaking the execution flow in laravel?
在 laravel 控制器中,我有一段代码需要在 48 小时后在我的数据库中创建记录后执行。
例如,一旦我 运行 下面的代码:
$model = new Model();
$model->value = true
$model->save();
48 小时后在控制台或控制器中执行另一个作业,进一步处理创建的记录。使用 cron 不是一个选项,因为在我的情况下它会导致我的数据库不必要的负载。
您可以为此使用 laravel 队列,只需将作业调度延迟 24 小时即可
您首先创建作业,然后在您的控制器中执行此操作,例如:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Jobs\ProcessModel;
use Illuminate\Http\Request;
class ModelController extends Controller
{
public function store(Request $request)
{
$model = new Model();
$model->value = true
$model->save();
ProcessModal::dispatch($model)
->delay(now()->addHours(24));
}
}
在 laravel 控制器中,我有一段代码需要在 48 小时后在我的数据库中创建记录后执行。
例如,一旦我 运行 下面的代码:
$model = new Model();
$model->value = true
$model->save();
48 小时后在控制台或控制器中执行另一个作业,进一步处理创建的记录。使用 cron 不是一个选项,因为在我的情况下它会导致我的数据库不必要的负载。
您可以为此使用 laravel 队列,只需将作业调度延迟 24 小时即可
您首先创建作业,然后在您的控制器中执行此操作,例如:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Jobs\ProcessModel;
use Illuminate\Http\Request;
class ModelController extends Controller
{
public function store(Request $request)
{
$model = new Model();
$model->value = true
$model->save();
ProcessModal::dispatch($model)
->delay(now()->addHours(24));
}
}