Вызов команды system () и возврат результатов - PullRequest
0 голосов
/ 27 октября 2009

Мне нужно помещать несколько тысяч больших файлов в папке в архив RAR несколько раз в день. Раньше я делал это вручную через sFTP, используя пользовательскую команду с программным пакетом RAR.

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

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

Есть идеи, как мне это сделать?

Спасибо:)

Ответы [ 3 ]

3 голосов
/ 27 октября 2009

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

0 голосов
/ 27 октября 2009

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

0 голосов
/ 27 октября 2009

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

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

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

...