Php 如何每24小时运行一次循环并从mysql表中删除行
我想做一个函数,删除状态为挂起的所有作业。我想每24小时跑步一次。我在考虑增加睡眠或其他什么。有人能建议怎么做吗 功能Php 如何每24小时运行一次循环并从mysql表中删除行,php,mysql,loops,while-loop,Php,Mysql,Loops,While Loop,我想做一个函数,删除状态为挂起的所有作业。我想每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_st
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
。在这里,您可以阅读如何设置这些:
您的代码应该是这样的。在第一个函数中,我首先存储了结果,因为一旦返回某个内容,其余的代码就不会执行
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\u pending\u jobs
功能外包给cronjob执行的新文件。我认为每24小时执行一次的最佳方式是cronjob。您的代码中没有抛出错误的mysqli\u fetch\u array()
函数调用。@RobinGillitzer我正在使用mysqli\u fetch\u assoc()
您的问题只是如何每24小时执行一次还是标题中的错误消息?@RobinGillitzer哦,对不起,我没有注意到标题。现在更新了我想每24小时运行一次你可以用cron作业来完成!或者睡眠功能很好,每24小时运行一次页面,cron作业更有用。将while($row=mysqli\u fetch\u assoc($$jobs)更改为while($row=mysqli\u fetch\u assoc($jobs)