За последние 24 часа нас посетили 20522 программиста и 1124 робота. Сейчас ищут 660 программистов ...

Вывод вещающих каналов RTMP

Тема в разделе "PHP для новичков", создана пользователем boomrush, 3 авг 2016.

  1. boomrush

    boomrush Новичок

    С нами с:
    3 авг 2016
    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте. Помогите пожалуйста сделать вывод каналов, которые сейчас транслируют (NGINX RTMP MODULE). Я новичок в PHP. У модуля есть страница статистики xml (кто вещает, когда, сколько и т.д. и т.п.). Пытался обрабатывать XML - в итоге пустая страница.
    Код обработки:
    PHP:
    1. <?
    2. include 'rtmpset.php';
    3.  
    4. $xml->rtmp[0]->nclients;
    5.  
    6.  
    7. foreach ($xml->rtmp as $info) {
    8. echo $info[nclients];
    9. }
    10. ?>
    Файл rtmpset.php:
    PHP:
    1. <?
    2. $xml = simplexml_load_file(rawurlencode('адрес rtmp сервера/stat.xml'));
    3. ?>
    но ничего этот код не выводит.
    Помогите пожалуйста.
     
    #1 boomrush, 3 авг 2016
    Последнее редактирование модератором: 3 авг 2016
  2. acanthis

    acanthis Активный пользователь

    С нами с:
    16 май 2016
    Сообщения:
    6
    Симпатии:
    1
    Для начала проверь после инклуда что у тебя в переменной $xml:
    PHP:
    1. var_dump($xml);
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
  4. boomrush

    boomrush Новичок

    С нами с:
    3 авг 2016
    Сообщения:
    5
    Симпатии:
    0
    Проверил. Выводит все правильно, но мне извлечь надо из xml отдельную строчку.

    object(SimpleXMLElement)#1 (12) { ["nginx_version"]=> string(5) "1.8.0" ["nginx_rtmp_version"]=> string(5) "1.1.4" ["compiler"]=> string(42) "gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) " ["built"]=> string(20) "Jul 31 2016 22:01:48" ["pid"]=> string(4) "5162" ["uptime"]=> string(5) "94626" ["naccepted"]=> string(2) "88" ["bw_in"]=> string(1) "0" ["bytes_in"]=> string(9) "182418715" ["bw_out"]=> string(1) "0" ["bytes_out"]=> string(9) "133957527" ["server"]=> object(SimpleXMLElement)#2 (1) { ["application"]=> array(2) { [0]=> object(SimpleXMLElement)#4 (2) { ["name"]=> string(4) "live" ["live"]=> object(SimpleXMLElement)#6 (1) { ["nclients"]=> string(1) "0" } } [1]=> object(SimpleXMLElement)#3 (2) { ["name"]=> string(3) "hls" ["live"]=> object(SimpleXMLElement)#6 (1) { ["nclients"]=> string(1) "0" } } } } }
    --- Добавлено ---
    тоже самое.
     
  5. boomrush

    boomrush Новичок

    С нами с:
    3 авг 2016
    Сообщения:
    5
    Симпатии:
    0
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
  7. acanthis

    acanthis Активный пользователь

    С нами с:
    16 май 2016
    Сообщения:
    6
    Симпатии:
    1
    Вероятнее всего в твоем xml файле нет тега rtmp. Соответственно ты ничего и не видишь, ибо freach сработает только в том случае, когда в массиве будет хотя бы один элемент
     
  8. boomrush

    boomrush Новичок

    С нами с:
    3 авг 2016
    Сообщения:
    5
    Симпатии:
    0
    Он есть. Вот весь исходный код страницы stat.xml:


    Код (Text):
    1.  
    2. <?xml version="1.0" encoding="utf-8" ?>
    3. <?xml-stylesheet type="text/xsl" href="stat.xsl" ?>
    4. <rtmp>
    5. <nginx_version>1.8.0</nginx_version>
    6. <nginx_rtmp_version>1.1.4</nginx_rtmp_version>
    7. <compiler>gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) </compiler>
    8. <built>Jul 31 2016 22:01:48</built>
    9. <pid>5162</pid>
    10. <uptime>150532</uptime>
    11. <naccepted>93</naccepted>
    12. <bw_in>0</bw_in>
    13. <bytes_in>182588539</bytes_in>
    14. <bw_out>0</bw_out>
    15. <bytes_out>133960056</bytes_out>
    16. <server>
    17. <application>
    18. <name>live</name>
    19. <live>
    20. <nclients>0</nclients>
    21. </live>
    22. </application>
    23. <application>
    24. <name>hls</name>
    25. <live>
    26. <nclients>0</nclients>
    27. </live>
    28. </application>
    29. </server>
    30. </rtmp>
    --- Добавлено ---
    я как раз от туда и брал код
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @boomrush смотри исходный код браузера, там видно иерархию в var_dump

    PHP:
    1. SimpleXMLElement::__set_state(array(
    2.    'nginx_version' => '1.8.0',
    3.    'nginx_rtmp_version' => '1.1.4',
    4.    'compiler' => 'gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ',
    5.    'built' => 'Jul 31 2016 22:01:48',
    6.    'pid' => '5162',
    7.    'uptime' => '150532',
    8.    'naccepted' => '93',
    9.    'bw_in' => '0',
    10.    'bytes_in' => '182588539',
    11.    'bw_out' => '0',
    12.    'bytes_out' => '133960056',
    13.    'server' =>
    14.   SimpleXMLElement::__set_state(array(
    15.      'application' =>
    16.     array (
    17.       0 =>
    18.       SimpleXMLElement::__set_state(array(
    19.          'name' => 'live',
    20.          'live' =>
    21.         SimpleXMLElement::__set_state(array(
    22.            'nclients' => '0',
    23.         )),
    24.       )),
    25.       1 =>
    26.       SimpleXMLElement::__set_state(array(
    27.          'name' => 'hls',
    28.          'live' =>
    29.         SimpleXMLElement::__set_state(array(
    30.            'nclients' => '0',
    31.         )),
    32.       )),
    33.     ),
    34.   )),
    35. ))
    Вот всё видно, утка в зайце, в утке яйцо, в яйце server, в server application, в application массив, в элементе массива live, в live nclients вот и иголка!

    PHP:
    1. // $xmlstr тут xml текст
    2. $xml = new SimpleXMLElement($xmlstr);
    3.  
    4. foreach ($xml->server->application as $tag) {
    5.     echo "nclients: ".$tag->live->nclients->__toString()."<br>";
    6. }
     
    mahmuzar и boomrush нравится это.
  10. boomrush

    boomrush Новичок

    С нами с:
    3 авг 2016
    Сообщения:
    5
    Симпатии:
    0
    Спасибо!