За последние 24 часа нас посетили 17417 программистов и 1677 роботов. Сейчас ищут 1737 программистов ...

как отловить вывод?

Тема в разделе "Прочие вопросы по PHP", создана пользователем DarkElf, 18 июн 2010.

  1. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    есть консольный скрипт, работает с ffmpeg.

    как отловить вывод команды exec('ffmpeg -i input.avi') ?

    при запуске вываливается вывод команды, но попытка как-либо его получить в php заканчивается получением пустых строк / массива и т.п.
     
  2. engager

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

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    ты из пхп-скрипта запускаешь шелл-скрипт?
    если да, то есть два варианта. можешь перенаправить вывод в файл ( exec('ffmpeg -i input.avi > results')), потом открыть его и прочитать, либо заморочиться с пайпами.
    гугл в помощь: php read console output
     
  3. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
  4. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    engager

    php-скрипт для крона. ffmpeg - конвертилка видео, для которых запускается процесс.
    попробовал Ваш вариант, записывается пустой файл.

    Volt(220)

    PHP:
    1. <?php
    2. var_dump( system('ffmpeg -i input.avi') );
    3. ?>
    выдает
    Код (Text):
    1. string(0) ""
    хотя рядом же (в консоли) правильный вывод.
     
  5. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Не надо var_dump.
     
  6. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    Volt(220)

    а сам вывод то как прочитать?
     
  7. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    конкретно в данном случае решило:

    PHP:
    1. <?php
    2.  
    3. exec('ffmpeg -i input.avi 2>&1', $output);
    4.  
    5. ?>
    в итоге вывод из консоли пропал, в переменной объявился.
    кривовато, наверное...

    привет ffmpeg'у, который свой вывод, как оказалось, помещает в поток ошибок, а не в поток вывода.
    век живи - век учись...:)