如何在 PHP 中实施 CRON 作业以执行删除操作

How to Implement CRON job in PHP to perform Delete action

我有一个类别列表,每个类别都有删除按钮。单击 delete 时,我正在更新数据库中的一个字段以进行跟踪。列名是 "deleted"。如果我点击 delete 它将更新为 1 否则 0.

if ($_REQUEST['action'] == 'delete')
    {
        $Deleted = $conn->query("update r_category SET deleted = 1 where id_category = ".$id);
    }
}

如果被误删除,我已编写代码将其更新回 0

if ($_REQUEST['action'] == 'undo') {
    $UndoDelete = $conn->query("update r_category SET deleted = 0");
}           

我正在寻找的是当用户没有 'undo' 时,删除的文件必须 1 周后从数据库中删除。我该如何处理?谁能为此建议我一些代码。

我已经写了这段代码,我该如何调用它

<?php
$Url      = "http://techdefeat.com/admin/category.php?action=undo"; 
$Handle   = curl_init($Url);
$Response = curl_exec($Handle);
curl_close($Handle);
?>

首先您需要更正您的 undo delete 代码。否则它基本上是取消删除您 table 中的所有记录。不管怎样,我会分享我对你的问题的建议。


由于您询问的是 cron 作业,因此您可以在您的网络应用程序中创建一个操作,以便在特定时间由每日 cron 作业调用。例如,以下 cron 作业将在每天凌晨 1 点 运行 调用给定的 URL.

0 1 * * * curl http://domain.name/endpoint/url

在这种情况下,您必须为 deleted 字段维护 3 个状态,

  • 0 - 未删除
  • 1 - 等待删除
  • 2 - 已删除

最初,deleted 字段将设置为 0。如果有人单击删除按钮,它可以更新为 1,即 "pending to delete"。您还需要通过添加 deletedDate 字段来更改 table 结构,当 deleted 字段更新为 1.

时,该字段将设置为当前时间戳

使用每日 cron 作业 运行ning,在操作中我们可以更新所有 "pending to delete" ( deleted = 1) 超过一周的记录 deletedDate 通过设置 deleted = 2 和 deletedDate = "current timestamp".

来标记为已删除

这只是我的意见,通常不建议将 cron 作业用于此类任务,因为在可伸缩性方面存在问题。推荐的方法是实施任务队列并通过它们进行处理。