Итак, я создал задание CRON, которое работает должным образом и выполняет все как следует, но мой вопрос: есть ли лучший способ построения этого задания CRON для более быстрого выполнения или этого будет достаточно на основе предполагаемой базы пользователей, возможно, несколько тысяч Я хотел бы оптимизировать его, если это возможно или даже необходимо, так как я буду запускать его каждые 5 минут. Я все еще новичок ie, когда дело доходит до работы в CRON, поэтому любые предложения будут великолепны, спасибо.
$adQuery = "SELECT
ads.ad_id,
ads.ad_date,
ad_updates.ad_id,
ad_updates.update_count,
ad_updates.intervals,
ad_updates.updates_left,
ad_updates.Time_of_next_update
FROM
ads
INNER JOIN
ad_updates
ON
ads.ad_id = ad_updates.ad_id
";
$stmt = $conn->prepare($adQuery);
$stmt->execute();
$stmtFetch = $stmt->fetchAll();
if($stmt->rowCount() > 0){
foreach($stmtFetch as $row){
$id = $row['ad_id'];
$update_count = $row['update_count'];
$intervals = $row['intervals'];
$updates_left = $row['updates_left'];
$time_of_next_update = $row['Time_of_next_update'];
$date = date('Y-m-d H:i:s');
if((strtotime($time_of_next_update) - strtotime($date)) <= 0){
switch ($row['update_count']) {
case 0:
$update_count = '0';
break;
case 1:
$update_count = '30';
break;
case 2:
$update_count = '60';
break;
case 3:
$update_count = '120';
break;
case 4:
$update_count = '180';
break;
case 5:
$update_count = '300';
break;
case 6:
$update_count = '420';
break;
case 7:
$update_count = '720';
break;
default:
break;
}
try{
$query = "UPDATE ads, ad_updates
SET
ads.ad_date = :date,
ad_updates.updates_left = (ad_updates.updates_left - 1),
ad_updates.Time_of_next_update = (ad_updates.Time_of_next_update + INTERVAL $update_count MINUTE)
WHERE
ads.ad_id = :id
AND
ad_updates.ad_id = :id
";
$timeQuery = $conn->prepare($query);
$timeQuery->bindParam(":date", $date);
$timeQuery->bindParam(":id", $id);
$timeQuery->execute();
}catch( PDOException $e ){
print_r( $e );
}
}
if($updates_left == 0){
$deletequery = "DELETE FROM ad_updates WHERE ad_id = :id LIMIT 1";
$deleteUpdate = $conn->prepare($deletequery);
$deleteUpdate->bindParam(":id", $id);
$deleteUpdate->execute();
}
}
$conn = null;
}