gpt4 book ai didi

php - 在我的一个函数完成后,在 laravel 中的特定时间段之后,我如何安排一个函数运行?

转载 作者:行者123 更新时间:2023-12-04 15:48:51 24 4
gpt4 key购买 nike

我有一个 ftp 功能,可以在单击按钮时将文件从一个文件夹移动到另一个文件夹(比如文件夹 a 到文件夹 b)。它工作得很好。我想要一个在调用上述函数后 30 分钟运行的函数(即在文件从 a 移动到 b 之后)。我如何在 Laravel 中安排这样的任务?

我想这样做,因为在移动该文件后,很少会执行一些功能,然后如果此人忘记删除该文件,那将很危险。所以我需要在文件从 a 移动到 b 30 分钟后检查文件是否已移回。

最佳答案

这听起来像是使用 Laravels 队列的绝好机会,它还允许延迟调度,正如您在查找 queuing and delayed dispatching 时可以在文档中找到的那样。 .

基本上,您需要一个可以推送到队列中的作业,如下所示

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

class RemoveFileFromFtp implements ShouldQueue
{
use Dispatchable, Queueable;

protected $file;

/**
* Create a new job instance.
*
* @param string $file
* @return void
*/
public function __construct(string $file)
{
$this->file = $file;
}

/**
* Execute the job.
*
* @param FtpService $ftpService
* @return void
*/
public function handle(FtpService $ftpService)
{
$ftpService->removeFileIfExists($this->file);
}
}

然后你就可以像这样发送任务了:

function doSomethingWithFileOnFtp()
{
// ... here you can do what you described

// and then you queue a clean up job for the file
RemoveFileFromFtp::dispatch($file)->delay(now()->addMinutes(30));
}

当然,此解决方案要求您正确设置 Laravel 队列。您可以通过不同的方式执行此操作,但我想文档是您最好的 friend (see here)。

关于php - 在我的一个函数完成后,在 laravel 中的特定时间段之后,我如何安排一个函数运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49484927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com