Maison  >  Article  >  cadre php  >  Comment thinkphp peut supprimer des données régulièrement chaque jour

Comment thinkphp peut supprimer des données régulièrement chaque jour

PHPz
PHPzoriginal
2023-04-11 10:31:56451parcourir

Dans le développement d'applications réelles, nous devons souvent supprimer régulièrement certaines données expirées ou inutiles afin de maintenir la propreté des données et les performances de la base de données. Dans le framework ThinkPHP, nous pouvons facilement implémenter la fonction de suppression régulière de données chaque jour via la classe Timer.

Voici l'idée d'implémentation :

  1. Tout d'abord, vous devez encapsuler le code de la tâche planifiée dans une méthode, telle que deleteExpiredData().
  2. Dans le fichier d'entrée ThinkPHP index.php, instanciez un objet Timer, enregistrez une tâche planifiée via celui-ci et spécifiez la méthode deleteExpiredData() à exécuter régulièrement chaque jour.
  3. Dans la méthode deleteExpiredData(), écrivez du code pour supprimer les données expirées, par exemple, interrogez toutes les données créées avant hier et supprimez-les.

Les étapes spécifiques d'implémentation sont les suivantes :

  1. Créez un module Test et créez un contrôleur nommé Task dans le répertoire du module. Le code est le suivant :
namespace app\test\controller;

use think\Controller;
use think\Db;
use think\facade\Log;

class Task extends Controller
{
    public function deleteExpiredData()
    {
        $yesterday = date('Y-m-d', strtotime('-1 day')); //获取昨天的日期
        $where = ['create_time' => ['<&#39;, $yesterday]]; //查询条件
        $res = Db::name(&#39;test&#39;)->where($where)->delete(); //执行数据删除操作
        Log::write('删除了'.$res.'条过期数据'); //记录日志
    }
}

Ici, prenez le module Test comme exemple pour interroger. la table de test sous le module Test Les données créées avant hier sont supprimées et le nombre d'éléments de données supprimés est enregistré dans le journal.

  1. Dans le fichier d'entrée ThinkPHP index.php, instanciez l'objet Timer et enregistrez la tâche planifiée. Le code est le suivant :
use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\facade\Log;
use think\console\Schedule;

require __DIR__ . '/../thinkphp/base.php'; //载入ThinkPHP框架

//定时任务注册
$schedule = new Schedule();
$schedule->call('app\test\controller\Task@deleteExpiredData') //每天执行deleteExpiredData()方法
    ->daily()
    ->at('00:00'); //指定执行时间

//Timer对象实例化
$timer = new \think\Timer();
$timer->add(86400, function () use ($schedule) {
    $schedule->run(); //执行定时任务
});

$timer->start(); //启动定时器

Ici, un objet Schedule est d'abord instancié pour gérer les tâches planifiées. Spécifiez ensuite la tâche à exécuter chaque jour via la méthode daily() et spécifiez l'heure d'exécution de la tâche via la méthode at(), qui est 00h00 chaque jour. Enregistrez ensuite la tâche planifiée via la méthode add() de l'objet Timer et spécifiez l'intervalle d'exécution de la tâche à un jour (c'est-à-dire 86 400 secondes). Enfin, démarrez le chronomètre et attendez que la tâche soit exécutée.

  1. Placez le programme sur le serveur et exécutez-le pour réaliser la fonction de suppression régulière des données expirées chaque jour.

Résumé :

Cet article présente des idées et des étapes de mise en œuvre spécifiques pour répondre à la nécessité de supprimer régulièrement des données chaque jour dans le cadre ThinkPHP. Les classes Timer et Schedule sont principalement utilisées. Grâce aux méthodes de ces classes, la fonction d'exécution régulière de tâches spécifiées est réalisée, ce qui réduit considérablement la difficulté de développement et la charge de travail.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn