Частые записи в базе данных - PHP, MySQLi - PullRequest
0 голосов
/ 21 ноября 2018

Я запускаю несколько живых и потоковых видео, которые сегментированы с помощью ffmpeg.Я запускаю один канал на облачный сервер.У меня есть центральный, более надежный сервер, который я использую для различных задач, одной из которых является загрузка основного списка воспроизведения m3u8 и сохранение имен сегментов и времени создания в базе данных.

Сегменты создаются примерно каждые 8 ​​секундна данный момент на 8 каналов.Это означает, что каждые 8 ​​секунд я вызываю playlist.m3u8 (который находится на удаленном сервере) и сохраняю информацию для каждого сегмента в базе данных.

Это позволяет мне быстро создавать VOD (Выбрать из канала 1между временем и временем).

Однако один или два раза база данных перестала работать, и мне нужно починить ее, прежде чем она сможет принять новую информацию.

Мне интересно, ударил ли яэто слишком сложно?Есть ли лучший способ?

Мое заявление открывает новое соединение, проверяет, существует ли уже запись, если нет, то она будет вводить ее, а затем закрывает соединение.

Я делаю это один раз заканал в 8 секунд.

Такое ощущение, что могло бы быть и лучше, но я не совсем знаю как.Должен ли я / могу ли я держать соединение открытым?Может быть, это совсем не проблема.

У кого-нибудь есть совет?

Если вам нужна дополнительная информация, просто спросите.

Запрос:

$conn = new mysqli($servername, $username, $password, $dbname);
$eight =  date('Y-m-d', strtotime("-8 day"));
$vq = "SELECT *  FROM `".$channels['channels'][$id]['fo_id']."`
                   WHERE `segment_name` = '".$oline."'";

$query = mysqli_query($conn, $vq);

if(mysqli_num_rows($query) == 0){
$sql = "INSERT INTO `".$channels['channels'][$id]['fo_id']."`
        (`segment_name`, `server`, `created`, `lenght`)
        VALUES
        ('".$oline."', '".$channels['channels'][$id]['server']."',
         '".date("Y-m-d H:i:s", $date)."', '".$otime."')";
$conn->query($sql);
}

$query = mysqli_query($conn, "DELETE FROM `".$channels['channels'][$id]['fo_id']."`
                           WHERE `created` < '".$eight." 00:00:00'");

$conn->close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...