【发布时间】:2020-06-15 13:14:07
【问题描述】:
我想创建一个函数来删除所有状态为待处理的作业。我想每 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
}
}
【问题讨论】:
-
我认为每 24 小时执行一次的最佳方式是 cronjob。您的代码中没有
mysqli_fetch_array()的函数调用会引发错误。 -
@RobinGillitzer 我正在使用
mysqli_fetch_assoc() -
你的问题是只有如何每24小时执行一次还是你标题中的错误信息?
-
@RobinGillitzer 哦,抱歉,我没注意到标题。现在更新了
-
我想每 24 小时运行一次 你可以通过 cron 作业来做到这一点!或者睡眠功能很好,它将每 24 小时运行一次您的页面,cron 作业更有用。将
while ($row = mysqli_fetch_assoc($$jobs)更改为此while ($row = mysqli_fetch_assoc($jobs)
标签: php mysql loops while-loop