#php #laravel-5.7
#php #laravel-5.7
Вопрос:
В контроллере laravel у меня есть фрагмент кода, который мне нужно выполнить через 48 часов после создания записи в моей базе данных.
Например, когда я запускаю следующий код:
$model = new Model();
$model->value = true
$model->save();
Либо в консоли, либо в контроллере 48 часов спустя для выполнения другого задания, которое дополнительно обрабатывает созданную запись. Использование cron не вариант, потому что в моем случае это приводит к ненужной загрузке моей базы данных.
Ответ №1:
Для этого вы можете использовать очереди laravel, просто отложив отправку задания на 24 часа
вы начинаете с создания задания, затем в вашем контроллере вы делаете это, например:
<?php
namespace AppHttpControllers;
use AppHttpControllersController;
use AppJobsProcessModel;
use IlluminateHttpRequest;
class ModelController extends Controller
{
public function store(Request $request)
{
$model = new Model();
$model->value = true
$model->save();
ProcessModal::dispatch($model)
->delay(now()->addHours(24));
}
}
ссылка: https://laravel.com/docs/8.x/queues#delayed-dispatching
Комментарии:
1. Вы указываете на документацию для laravel 8, а не для laravel 5.7
2. @DimitriosDesyllas, мой плохой, но в laravel 5.7 то же самое laravel.com/docs/5.7/queues#delayed-dispatching