Добрый день, очень благодарна за вашу помощь, я снова к вам за советом)
Есть cron обработчик, который обновляет время показа видео, при этом видео должно показываться каждый час
$sql_select = "SELECT * FROM vid";
$query = mysqli_query($link,$sql_select) or die("Ошибка: " . mysqli_error($link));
// Просматриваем все видео
while ( $res = mysqli_fetch_assoc($query) ) {
$startNext = $res['web_date'];
$dateNow = new DateTime("now");
// Добавление 10 минут к предстоящей дате видео
$time = new DateTime($startNext);
$time->add(new DateInterval('PT10M'));
while ($time < $dateNow) {
$newdate = strtotime($res['web_date']);
if ( $res['web_everyday'] != '' ) {
// Если видео ежедневное
$hm = explode(":", $res['web_everyday']);
$newdate += $hm[0] * 3600 + $hm[1] * 60;
$date = date('d.m.Y H:i', $newdate);
$endDate = strtotime($res['web_date']);
$ms = explode(":", $res['web_duration']);
$endDate += $ms[0]*60 + $ms[1];
$newEnd = date('d.m.Y H:i', $endDate);
$endWeb = new DateTime($newEnd);
$webid = $res['web_id'];
$lastdate = $res['web_date'];
if( $res['time_now'] == 1 ){
// Если видео не запущено, переносим его на следующее время
$update_webconf = "UPDATE `vid` SET `time_now` = '1', `last_date`='{$lastdate}', `web_date`='{$date}' WHERE `web_id` = '$webid'";
$result = mysqli_query($link,$update_webconf) or die("Ошибка: " . mysqli_error($link));
}elseif( $endWeb < $dateNow){
// Если время видео подошло к концу, очищаем чат и переносим на следующее время
$delete_chat = "DELETE FROM vid_chat WHERE chat_id= '$webid'";
$result = mysqli_query($link, $delete_chat) or die("Ошибка " . mysqli_error($link));
$update_webconf = "UPDATE `vid` SET `time_now` = '1', `last_date`='{$lastdate}', `web_date`='{$date}' WHERE `web_id` = '$webid'";
$result = mysqli_query($link,$update_webconf) or die("Ошибка: " . mysqli_error($link));
}
}else{
// Если видео назначен на конкретную дату отправляем его в архив
$update_webconf = "UPDATE `vid` SET `web_archive` = '1', `last_date`='{$lastdate}' WHERE `web_id` = '$webid'";
$result = mysqli_query($link,$update_webconf) or die("Ошибка: " . mysqli_error($link));
}
}
}
Мне кажется, что такая нагрузка из-за sql запросов в цикле, если нет то поправьте
Как можно не поломав логику сделать всё без большой нагрузки на сервер?