为了账号安全,请及时绑定邮箱和手机立即绑定

如何每24小时运行一次循环并从mysql表中删除行

如何每24小时运行一次循环并从mysql表中删除行

PHP
慕后森 2022-10-14 16:00:05
我想创建一个函数来删除所有状态为待处理的作业。我想每 24 小时运行一次。我正在考虑增加睡眠或其他东西。有人可以建议怎么做吗?功能  function find_by_job_status($status) {    global $db;    // create a prepared statement    $sql = "SELECT * FROM jobs WHERE status = ?";    $stmt = mysqli_stmt_init($db);    mysqli_stmt_prepare($stmt, $sql);    // bind parameters for placeholders    mysqli_stmt_bind_param($stmt, "s", $status);    // execute the query    mysqli_stmt_execute($stmt);    return mysqli_stmt_get_result($stmt);    // close statement    mysqli_stmt_close($stmt);  }  function delete_pending_jobs() {    $jobs = find_by_job_status('pending');    while ($row = mysqli_fetch_assoc($$jobs)) {      // Delete All Pending jobs      // Wait for 24 hours      // Loop again    }  }
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

最好的办法execute every 24 hours is cronjob。在这里您可以了解如何设置这些:如何使用 PHP 创建 cron 作业?

你的代码应该是这样的。在第一个函数中,我首先存储了结果,因为一旦返回某些内容,其余代码将不会执行。

function find_by_job_status($status) {

  global $db;


  // create a prepared statement

  $sql = "SELECT * FROM jobs WHERE status = ?";

  $stmt = mysqli_stmt_init($db);

  mysqli_stmt_prepare($stmt, $sql);


  // bind parameters for placeholders

  mysqli_stmt_bind_param($stmt, "s", $status);


  // execute the query

  mysqli_stmt_execute($stmt);


  // store the result in var

  $result = mysqli_stmt_get_result($stmt);


  // close statement

  mysqli_stmt_close($stmt);


  // return result

  return $result;

}


function delete_pending_jobs() {

  global $db;


  $jobs = find_by_job_status('pending');


  while ($row = mysqli_fetch_assoc($jobs)) {

    $stmt = mysqli_stmt_init($db);


    // create a prepared statement

    $sql = "DELETE FROM jobs WHERE id = ?";

    mysqli_stmt_prepare($stmt, $sql);


    // bind parameters for placeholders

    mysqli_stmt_bind_param($stmt, "s", $row['id']);


    // execute the query

    mysqli_stmt_execute($stmt);


    // close statement

    mysqli_stmt_close($stmt);

  }

}

我更愿意将delete_pending_jobs函数外包给由 cronjob 执行的新文件。


查看完整回答
反对 回复 2022-10-14
  • 1 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信