调用 system() 命令并返回结果
Posted
技术标签:
【中文标题】调用 system() 命令并返回结果【英文标题】:Calling a system() command and bringing back the results 【发布时间】:2009-10-27 03:38:32 【问题描述】:我每天需要多次将文件夹中的数千个大文件放入 RAR 存档中。我曾经使用带有 RAR 软件包的自定义命令通过 sFTP 手动执行此操作。
我想知道是否可以在 php 中使用 system() 来使用 RAR 命令,并每隔一秒左右返回结果以清楚地指示该过程的进度。
当您使用 RAR 命令时,它会在终端窗口中绘制一个进度条,很像 wget。我想抓住那个进度条并以某种方式将其显示在页面上。
关于如何做到这一点的任何想法?
谢谢:)
【问题讨论】:
【参考方案1】:您可以使用PHP popen() 调用来执行进程并读取其标准输出。这将为您提供进度条。但是,使用 PHP builtin rar 支持可能会为您提供更强大的解决方案,并更好地了解问题所在和原因。
【讨论】:
从内置的PHP rar支持中可以看出,它只支持解压RAR文件,不支持存档,这是我需要做的。不过,感谢您的链接,这对我以后需要做的事情会有所帮助:)【参考方案2】:如果您坚持使用system(),那么您能做的最好的事情就是从该过程中获取返回码。找出成功的返回码。使用它来确定您的操作实际上是否成功。
如果您使用exec() 或passthru(),您也可以获得命令的输出。
您也许可以通过popen() 使用一些魔法来获得进度条,但我不确定。
【讨论】:
【参考方案3】:是的,popen() 可能很有用。您可以获取输出并对其进行解析以获取结果。
【讨论】:
以上是关于调用 system() 命令并返回结果的主要内容,如果未能解决你的问题,请参考以下文章