PHP 中的 shell_exec()
Posted
技术标签:
【中文标题】PHP 中的 shell_exec()【英文标题】:shell_exec() in PHP 【发布时间】:2010-04-08 14:16:21 【问题描述】:<?php
// Execute a shell script
$dump = shell_exec('bigfile.sh'); // This script takes some 10s to complete execution
print_r($dump); // Dump log to screen
?>
当从浏览器执行上面的脚本时,它会加载 10 秒,然后将脚本的输出转储到屏幕上。这当然是正常的。但是如果我想让shell脚本写入STDOUT的数据实时显示在屏幕上,有什么办法可以做到吗?
【问题讨论】:
【参考方案1】:如果需要,我会添加 proc_open(),它可以让您更好地控制命令执行,如果没有,请尝试前面提到的 passthru() 或 popen()。
【讨论】:
【参考方案2】:试试这个:
$handle = proc_open('bigfile.sh', array(0 => STDIN, 1 => STDOUT, 2 => STDERR), $pipes);
$status = proc_close($handle);
它对我很有用。
【讨论】:
【参考方案3】:试试passthru() 或popen()
代码如下所示:
<?php
$fp=popen("bigfile.sh","r");
while (!feof($fp))
$results = fgets($fp, 256);
echo $result;
flush();
?>
正如@wik 下面建议的那样,您也可以尝试 proc_open 而不是 popen 它应该以类似的方式工作。
【讨论】:
Ivo,您能否为其中任何一个添加代码示例?可能替代我上面的代码?以上是关于PHP 中的 shell_exec()的主要内容,如果未能解决你的问题,请参考以下文章
PHP 中的 exec()、shell_exec、system() 和 passthru() 函数有啥不同? [复制]