Сделал такой алгоритм.
Программа генерирует каждые 15 минут один и тот же файл, внутри которого 2 строчки: в первой строке имя артиста и название песни текущего трека, во второй соответственно что будет дальше.
Все это дело, через утилиту xStarter загружается каждые 10 секунд на фтп, где уже обрабатывается php скриптом..
Если название текущей композиции из базы данных, не совпадает с названием композиции из текстового файла, то название из базы данных пишем в предыдущую композицию.
Сам файл запускается Cron'om каждую минуту.
Зацените скрипт, может у кого есть другие примеры реализации вывода?
<?php
// Запрет на кеширование
nocache_headers();
// Устанавливаем время раьоты скрипта в 1 минуту
ini_set("max_execution_time", 60);
// Устанавливаем счетчик на 0
$x = 0;
// Запускаем цикл в 19 раз
while ($x < 19) {
clearstatcache();
//укажем путь к файлу с нащваниями песен и артистов
$streamfile = '/var/www/****/public_html/***/stream/stream.txt';
if (file_exists($streamfile)) {
echo "Файл существует";
$last_update = filemtime($streamfile);
// Время отлично подходит в качестве параметра для функции date()
$date_last_update = date('Y-m-d H:i:s', $last_update); // 2011-10-09 23:39:27
// получим файл по адресу
$streamfile = file_get_contents($streamfile);
// конвертируем колировку в ютф8
$streamfile = mb_convert_encoding($streamfile, "utf-8", "windows-1251");
// разбиваем текст на две строки
$stream_parts = explode(PHP_EOL, $streamfile);
// разбиваем вторую строку на артиста и название трека
$current_parts = explode(' - ', $stream_parts[1]);
// разбиваем первую строку
$next_parts = explode(' - ', $stream_parts[0]);
echo '<h3>текущий трек</h3><br>';
echo 'имя исполнителя:<br>';
echo $current_parts[0];
echo '<br>название трека:<br>';
echo $current_parts[1];
echo '<br><h3>следующий трек</h3><br>';
echo 'имя исполнителя:<br>';
echo $next_parts[0];
echo '<br>название трека:<br>';
echo $next_parts[1];
$get_current_song = get_field('current_song', 1613);
$get_current_artist = get_field('current_artist', 1613);
echo '<br><h3>текущий трек из базы</h3><br>';
echo 'имя исполнителя:<br>';
echo $get_current_artist;
echo '<br>название трека:<br>';
echo $get_current_song;
if ((string)$current_parts[0] == (string)$get_current_artist) {
// если название артиста из файла(играет сейчас) совпадает с запрошенным из базы данных
echo '<p style="color:red;">имя артиста совпадает с именем из базы текущего трека.</p>';
} elseif ((string)$current_parts[0] == 'Джингл') {
echo '<p style="color:black;">джинг в настоящем обнаружен</p>';
} elseif ((string)$next_parts[0] == 'Джингл') {
echo '<p style="color:black;">джинг в новом обнаружен</p>';
} else {
//
echo '<p style="color:green;">имя артиста не совпадает с именем из базы текущего трека.</p>';
$get_current_song = get_field('current_song', 1613);
$get_current_artist = get_field('current_artist', 1613);
$get_logs = get_field('logs', 1613);
$write = $current_parts[0] . " - " . $current_parts[1] . "\r\n";
$uplogs = $get_logs . $write;
update_field('logs', $uplogs, 1613);
// обновляем артиста раньше
update_field('prev_artist', $get_current_artist, 1613);
// обновляем название трека раньше
update_field('prev_song', $get_current_song, 1613);
// обновляем артиста сейчас
update_field('current_artist', $current_parts[0], 1613);
// обновляем название трека сейчас
update_field('current_song', $current_parts[1], 1613);
// обновляем артиста следующий
update_field('next_artist', $next_parts[0], 1613);
// обновляем название трека следующий
update_field('next_song', $next_parts[1], 1613);
}
// получаем счетчик
$count = get_field('count', 1613);
// добавляем 1 к счетчику
$count++;
// обновляем счетчик
update_field('count', $count, 1613);
} else {
echo "ошибка открытия файла";
}
$x++; // Увеличение счетчика
// спим 3 секунды
sleep(3);
}