调用 system() 命令并返回结果
我每天需要多次将文件夹中的数千个大文件放入 RAR 存档中。我曾经使用 RAR 软件包的自定义命令通过 sFTP 手动执行此操作。
我想知道是否可以在 PHP 中使用 system() 来使用 RAR 命令,并每秒左右返回一次结果,以便清楚地指示该过程进行了多远。
当您使用 RAR 命令时,它会在终端窗口中绘制一个进度条,就像 wget 一样。我想抓住该进度条并以某种方式将其显示在页面上。
关于我如何做到这一点有什么想法吗?
谢谢 :)
I need to put several thousand large files in a folder into a RAR archive several times a day. I used to do this manually via sFTP using a custom command with the RAR software package.
I'm wondering if it would be possible to use the RAR command using system() in PHP, and bring back the results every second or so to get a clear indication of how far along the process is.
When you use the RAR command, it draws a progress bar in the terminal window much like wget. I want to grab that progress bar and somehow display it on a page.
Any ideas on how I could do this?
Thanks :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 PHP popen() 调用来执行进程并读取其标准输出。这会给你进度条。但是,使用 PHP 内置 rar 支持可能会为您带来更强大的解决方案,提供有关错误原因及其原因的更好信息。
You can use the PHP popen() call to execute a process and read its standard output. That will get you the progress bar. However, using the PHP builtin rar support might get you a more robust solution with better information on what went wrong and why.
如果您坚持使用 system() 那么您能做的最好的就是获得从进程返回代码。查看成功的返回码是什么。用它来确定您的操作是否确实成功。
如果您使用 exec() 或 passthru() 您也可以获得该命令的输出。
您也许可以使用 popen(),但我不确定。
if you stick with system() then the best you can do is get the return code back from the process. Find out what the return code is for success. Use it to determine if your operation was, in fact, successful.
If you use exec() or passthru() you can get the output of the command as well.
You might be able to get the progress bar using some magic with popen(), but I am not sure.
是的,popen() 可能很有用。您可以获取输出并解析它以获得结果。
Yes may be popen() is useful. You can get the output and parse it to get the results.