Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在X时间后删除一些记录或文件-Laravel 5_Sql_Laravel_Laravel 5 - Fatal编程技术网

Sql 如何在X时间后删除一些记录或文件-Laravel 5

Sql 如何在X时间后删除一些记录或文件-Laravel 5,sql,laravel,laravel-5,Sql,Laravel,Laravel 5,我想创建一个脚本,在X时间后删除一些记录,我会选择它,但我不知道,我怎么做? 与我的文件一样,我想在X时间后从上传中删除一些文件,例如,要做到这一点,我将从我的存储中删除文件,并从数据库中删除文件记录,,但这将使我的网站变慢,,任何方法都不会出现问题 以这个为例 或 我的桌子是: 所以我想在创建2小时后删除此记录?但我有很多记录?怎么做 文件表: 这些是我的记录,它们包含我文件的路径,但是每个文件都会在创建后5天过期,例如,因此我将从路径中删除它,然后从数据库中删除这些记录。但这会让网站变得很慢

我想创建一个脚本,在X时间后删除一些记录,我会选择它,但我不知道,我怎么做? 与我的文件一样,我想在X时间后从上传中删除一些文件,例如,要做到这一点,我将从我的存储中删除文件,并从数据库中删除文件记录,,但这将使我的网站变慢,,任何方法都不会出现问题

以这个为例

我的桌子是: 所以我想在创建2小时后删除此记录?但我有很多记录?怎么做

文件表: 这些是我的记录,它们包含我文件的路径,但是每个文件都会在创建后5天过期,例如,因此我将从路径中删除它,然后从数据库中删除这些记录。但这会让网站变得很慢吗?有办法吗


谢谢:)

文件::where('created_at'),Laravel很好地处理了这个问题。你说得对,请使用

我的建议是设置两个不同的工作,因为任务之间的时间有两个不同的标准(2小时,5天)

对于记录,您可以在作业中设置检查以查看记录的创建时间,并删除超过2小时的记录。类似于:

$schedule->call(function () {
        DB::table('your_table')->whereRaw('created_at >= now() - interval 2 hour')
    })->daily();
->where('created_at', '>=', Carbon::now()->subMinutes(120)->toDateTimeString());
如果使用Carbon,可以使用以下内容更改查询:

$schedule->call(function () {
        DB::table('your_table')->whereRaw('created_at >= now() - interval 2 hour')
    })->daily();
->where('created_at', '>=', Carbon::now()->subMinutes(120)->toDateTimeString());
文件删除也一样-制作一个作业,删除那些超过5天的文件。如果您将作业设置为每天至少在最不受欢迎的时间执行一次,则不会使您的系统慢很多。因此,在制作作业时:

$schedule->job(new YourJob)->dailyAt('3:00');

有很多方法可以做到这一点。但是,你需要学习调度程序是如何工作的(很简单),然后你可以在这里使用可能的解决方案。

我可以使用事件吗?当然。但是,你不需要按照上述方法使用调度程序。我认为使用调度程序最简单,除非你需要更高的精度。这个答案(如果您计划每小时触发一次记录删除,每天触发一次文件删除)我想这会让你到达你想要的地方。如果你担心网站速度变慢,事件可能不是最好的选择,这取决于你的实现方式。但是,在使用任务计划程序时,我是否需要每次运行
artisan schedule:run
&
queue:work
?要工作?只需通过cron job设置一次。在此处查看计划中的文档:这将引导您了解您需要了解的内容-然后使用上面答案中的提示,您就可以开始了!谢谢,但我的意思是,在运行
php artisan schedule:run
?Laravel会做其他事情吗?我不需要再运行它了?