[英]Live output to a file with PHP exec()?
在Windows上,我使用PHP执行gulp
命令。
像这样 :
<?php
set_time_limit(0);
exec("cd /projectpath");
$results = exec("gulp");
?>
这行得通,但是我只能在命令完成后才能获得命令的结果,这大约需要30秒。
我想在文件运行时将结果写入文件,以便可以使用Ajax在一定间隔内轮询进度。
在正常的命令提示符下,我可以执行
gulp > results.txt 2>&1
并且在命令运行时正在填充文本文件。
我已经尝试过shell_exec
(), system
()和passthru
(),但是我无法在PHP中使用它。
有任何想法吗 ?
为什么不按照您提出的方式仅调用exec()
?
<?php
set_time_limit(0);
exec("cd /projectpath");
$results = exec("gulp > results.txt 2>&1");
?>
使用proc_open
:
<?php
$cmd = 'for i in $(seq 20); do sleep 1; echo $i; done';
$cwd = '/';
$descriptors = array(
0 => array('pipe', 'r'),
1 => array('file', 'stdout', 'w'),
2 => array('file', 'stderr', 'w'),
);
$handle = proc_open($cmd, $descriptors, $pipes, $cwd);
if (!$handle) {
echo 'failed to run command';
} else {
proc_close($handle); // wait for command to finish (optional)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.