Ну если я правильно понял что на выходе нужно получить в первой строке количество слушателей, во второй пик слушателей и в третьей аптайм потока или сервера то вот вариант с status-json:
<?php
$file_name = "http://air.ru:8000/status-json.xsl";
$mount = isset($argv[1]) ? "/" . $argv[1] : "/all";
$file_name = $mount === "/all" ? $file_name : $file_name . "?mount=" . $mount;
$mass = json_decode(file_get_contents($file_name), true);
$list = $peak = $ti = 0;
if (isset($mass['icestats']['source']['stream_start'])) {
$list = $mass['icestats']['source']['listeners'];
$peak = $mass['icestats']['source']['listener_peak'];
$ti = $mass['icestats']['source']['stream_start'];
} else {
$ti = $mass['icestats']['server_start'];
if (isset($mass['icestats']['source'])) {
foreach ($mass['icestats']['source'] as $source) {
$list = $list + $source['listeners'];
}
}
}
$ti = time() - strtotime($ti);
$day = floor($ti/86500);
$he = floor(($ti-$day*86500)/3600);
$mi = floor(($ti-$day*86500-$he*3600)/60);
$upt = $day . " days, " . $he . " hours, " . $mi . " minutes.";
echo $list . PHP_EOL . $peak . PHP_EOL . $upt . PHP_EOL . $mount;
?>
Вызывать без аргументов, так например:
если нужна суммарная информация по серверу, прошу учесть что в таком случае пиковое значение будет нулевым (считать сумму пиков с потоков мягко говоря некорректно) и будет использован аптайм сервера.
Ну и чтобы получить данные конкретного потока добавляем к строке запуска в качестве аргумента нужный поток, например так:
/usr/bin/php allstat.php radio.mp3
Пробуйте - должно работать.
Жуткая некрофилия на самом деле эта статистика что с mrtg, что с minin, что с cacti и еще не знаю что там использовали в древние времена, с бд все куда проще и интересней.