我很想知道passthru()到底在做什么?
我必须创建具有类似功能的我自己的功能,但我无法理解该功能的工作原理。
答案 0 :(得分:1)
为什么不使用shell_exec
并附加>> file
来命令?
function exec_to_file($cmd,$file){
shell_exec(escapeshellcmd($cmd) . ' >> ' . $file);
}
答案 1 :(得分:0)
执行命令后是否需要显示二进制数据?
您希望如何更改为标准行为?
据我所知,passthru()的工作方式类似于exec()和system(),但也允许处理/显示二进制数据,所以我的猜测是它管道passthru()的输出直接命令二进制流。
请参阅http://php.net/manual/en/function.passthru.php。
我希望这会有所帮助,否则我应该得到一次投票。
答案 2 :(得分:0)
可以在ext/standard/exec.c中找到passthru的源代码 - 它实际上非常易读,应该可以直接用PHP编写自己的版本。
听起来你需要做的只是使用popen来打开一个进程,然后你可以像其他任何文件句柄一样读取它的输出。
答案 3 :(得分:0)
passthru
的内部结构对你没有多大帮助,因为它们的级别太低而无法通过PHP重现。
我的目标是将输出转发到任意文件,而不仅仅是php:// stdout。
如果您想在PHP级别上执行此操作而不先将整个输出读入变量,我建议使用popen
之类的内容。这使您可以打开一个指向进程的指针,您可以从中一点一点地读取该数据并将数据一点一点地写入文件(这实际上可能与passthru
非常接近)。 E.g:
while (($buffer = fread($p, 1024)) !== false) {
fwrite($file, $buffer);
}
如果您仍在使用命令行,为什么不在那里写一个文件?
exec('command > file');