Лучший способ execute every 24 hours is cronjob
. Здесь вы можете прочитать о том, как их настроить: Как создать задание cron, используя PHP?
Ваш код должен быть таким. В первой функции я сначала сохранил результат, потому что когда вы что-то возвращаете, остальной код не будет выполняться.
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.