亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何每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 關注
  • 144 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號