2009-10-27 1 views
0

Мне нужно несколько тысяч файлов в папке в архив RAR несколько раз в день. Я использовал это вручную с помощью sFTP с помощью специальной команды с программным пакетом RAR.Вызов команды system() и возврат результатов

Мне интересно, можно ли использовать команду RAR с помощью system() в PHP и возвращать результаты каждую секунду или около того, чтобы получить четкое представление о том, насколько далеко продвинулся процесс.

Когда вы используете команду RAR, она выводит индикатор выполнения в окне терминала так же, как wget. Я хочу захватить этот индикатор выполнения и как-то отобразить его на странице.

Любые идеи о том, как я мог это сделать?

Спасибо :)

ответ

3

Вы можете использовать PHP popen() вызов для выполнения процесса и прочитать его стандартный вывод. Это даст вам индикатор прогресса. Однако использование поддержки PHP builtin rar может дать вам более надежное решение с лучшей информацией о том, что пошло не так и почему.

+0

Из того, что я вижу из встроенной поддержки PHP rar, он поддерживает только извлечение RAR-файлов, а не их архивирование, что и нужно делать. Спасибо за ссылку, однако, это будет полезно для чего-то, что мне нужно сделать позже по линии :) – Whitey

0

Если вы придерживаетесь system(), то лучшее, что вы можете сделать, это вернуть код возврата из процесса. Узнайте, что означает код возврата для успеха. Используйте его, чтобы определить, действительно ли ваша операция была успешной.

Если вы используете exec() или passthru(), вы также можете получить вывод команды.

Возможно, вы можете получить индикатор выполнения с помощью некоторой магии с popen(), но я не уверен.

0

Да может быть popen() полезна. Вы можете получить результат и проанализировать его, чтобы получить результаты.