Под свои цели ты можешь сделать схему, количество и имена полей результирующего файла. А когда речь заходит о целостности и работоспособности, то это вроде и так должно быть, не? Просто когда у диджея кавычка в тегах вылезает и от этого падает все и вся - это извините, пиздец, а не личные цели. Хотя я верю, что в том стриме, что был у тебя, всегда торчало одно название, поэтому проблем и не возникало.
Что касается наработок, то это и наработками называть страшно, ибо это напишет любой школьник, гордиться тут совершенно нечем.
void
logging_playlist (const char *mount, const char *metadata, long listeners)
{
char datebuf[128];
struct tm thetime;
time_t now;
char buff[5000];
int len = strnlen (metadata, 5000);
if (len < 5000)
{
strncpy (buff, metadata, len + 1);
int i;
for (i = len; i >= 0; i--)
{
if (buff[i] == '"')
{
memmove (buff + i + 1, buff + i, len - i + 1);
buff[i] = '\\';
}
}
ice_config_t *conf = config_get_config ();
char fn_json[FILENAME_MAX];
snprintf (fn_json, FILENAME_MAX, "%s%sstat.js",
conf != NULL ? conf->webroot_dir : ".", PATH_SEPARATOR);
FILE *json = fopen (fn_json, "w");
fprintf (json, "play_callback(\"%s\",%ld);", buff, listeners);
fclose (json);
}
Сделано было под МОИ нужды, хотя можно поправить под что угодно. Кавычки эскейпятся, битый жсон не приходит. Использован коллбек, а не переменная, дабы можно было отправлять запрос на чужой домен/порт. Обновление происходит при смене трека, в ту самую секунду, когда сменился оный, а не когда поллер просрется. Создается статика, которую можно отдавать хоть айскастом, хоть нгинксом. И никакого похапе. Под "мои цели".
Что касается нескольких серверов, то я бы предпочел сохранять файлик на каждом из них, дабы когда часть серверов сдохнет, плеер продолжал играть, асинхронно опрашивая оставшихся в живых и опционально переходя на них, если играемый отвалился. Но опять, каждый сходит с ума по своему.
А идиотизм потому, что накушался этого говна, которое досталось мне в наследство: тег меняется, а плеер еще минуту-другую кажет старый, ибо сначала должен обработать похапе-скрипт раз в минуту, а потом еще плеер должен опросить. Такая слоупочность плеера адово выбешивала.
???
---------------------------------------
С наилучшими пожеланиями, IceMaster.
Все виды трансляций. Самые сложные варианты.
Патчи для открытых серверов, cобственные системы управления.
Создание эксклюзивных решений стриминга под любые, самые необычные запросы клиентов.
PHP-обезьянкой не работаю, плееры по 10 баксов не делаю. Делаю сложные и интересные проекты.