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

时间:2016-10-04 08:44:04

标签: php jquery timer cron sql-delete

我有一个类别列表,其中包含单个行的删除按钮。当我单击delete时,我正在更新数据库中的一个字段以进行跟踪。列名称为“已删除”。如果我点击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");
}           

我正在寻找的是当用户没有“撤消”时,删除的文件必须  1周后从数据库中删除。我该怎么做?任何人都可以为我建议一些代码。

我已经写了这段代码,我怎么称呼这个

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

1 个答案:

答案 0 :(得分:1)

首先,您需要更正undo delete代码。否则,它基本上取消删除表中的所有记录。无论如何,我会就你的问题分享我的建议。

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

  

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

在这种情况下,您必须为deleted字段保留3种状态,

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

最初,deleted字段将设置为0.如果有人点击删除按钮,则可以将其更新为1,等待删除&#34;。此外,您还需要通过添加deletedDate字段来更改表格结构,当deleted字段更新为1时,该字段将使用当前时间戳设置。

在每日cron作业运行的情况下,我们可以在操作中更新所有&#34;等待删除&#34; (deleted = 1)通过设置deletedDate = 2和deleted =&#34;当前时间戳&deletedDate class addMaxLength { constructor() { this.restrict = 'A'; this.scope = { maxLength : '=' }; } // optional link function link(scope, element, attributes) { if(scope.maxLength > 0){ element.attr('md-maxlength',scope.maxLength); } } } addMaxLength.$inject = []; export { addMaxLength }; 超过一周的记录标记为已删除#34;

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