Heim  >  Artikel  >  PHP-Framework  >  Wie thinkphp regelmäßig jeden Tag Daten löschen kann

Wie thinkphp regelmäßig jeden Tag Daten löschen kann

PHPz
PHPzOriginal
2023-04-11 10:31:56457Durchsuche

Bei der tatsächlichen Anwendungsentwicklung müssen wir häufig abgelaufene oder nutzlose Daten regelmäßig löschen, um die Datensauberkeit und Datenbankleistung aufrechtzuerhalten. Im ThinkPHP-Framework können wir die Funktion zum regelmäßigen täglichen Löschen von Daten über die Timer-Klasse problemlos implementieren.

Das Folgende ist die Implementierungsidee:

  1. Zunächst müssen Sie den Code der geplanten Aufgabe in eine Methode kapseln, z. B. deleteExpiredData().
  2. Instanziieren Sie in der ThinkPHP-Eintragsdatei index.php ein Timer-Objekt, registrieren Sie darüber eine geplante Aufgabe und geben Sie die Methode deleteExpiredData() an, die regelmäßig jeden Tag ausgeführt werden soll.
  3. Schreiben Sie in der Methode deleteExpiredData() Code zum Löschen abgelaufener Daten, fragen Sie beispielsweise alle Daten ab, die vor gestern erstellt wurden, und löschen Sie sie.

Die spezifischen Implementierungsschritte lauten wie folgt:

  1. Erstellen Sie ein Testmodul und erstellen Sie einen Controller mit dem Namen Task im Modulverzeichnis. Der Code lautet wie folgt:
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.'条过期数据'); //记录日志
    }
}

Nehmen Sie hier das Testmodul als Beispiel für die Abfrage In der Testtabelle unter dem Testmodul werden vor gestern erstellte Daten gelöscht und die Anzahl der gelöschten Datenelemente wird im Protokoll aufgezeichnet.

  1. Instanziieren Sie in der ThinkPHP-Eintragsdatei index.php das Timer-Objekt und registrieren Sie die geplante Aufgabe. Der Code lautet wie folgt:
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(); //启动定时器

Hier wird zunächst ein Schedule-Objekt instanziiert, um geplante Aufgaben zu verwalten. Geben Sie dann über die Methode daily () die Aufgabe an, die jeden Tag ausgeführt werden soll, und geben Sie über die Methode at () die Ausführungszeit der Aufgabe an, die jeden Tag 00:00 Uhr beträgt. Registrieren Sie dann die geplante Aufgabe über die Methode add() des Timer-Objekts und geben Sie das Ausführungsintervall der Aufgabe als einen Tag (dh 86400 Sekunden) an. Starten Sie abschließend den Timer und warten Sie, bis die Aufgabe ausgeführt wird.

  1. Legen Sie das Programm auf den Server und führen Sie es aus, um die Funktion des regelmäßigen täglichen Löschens abgelaufener Daten zu realisieren.

Zusammenfassung:

In diesem Artikel werden spezifische Implementierungsideen und Schritte für die Notwendigkeit vorgestellt, Daten regelmäßig jeden Tag im Rahmen des ThinkPHP-Frameworks zu löschen. Die Timer-Klasse und die Schedule-Klasse werden hauptsächlich verwendet. Durch die Methoden dieser Klassen wird die Funktion der regelmäßigen Ausführung bestimmter Aufgaben jeden Tag realisiert, was die Entwicklungsschwierigkeiten und den Arbeitsaufwand erheblich reduziert.

Das obige ist der detaillierte Inhalt vonWie thinkphp regelmäßig jeden Tag Daten löschen kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn