【发布时间】:2010-01-22 17:52:21
【问题描述】:
是否可以从php中的命令行工具获取stdout输出数据?
例子:
我想将服务器创建的动态混合音频文件上传到客户端。 SOX 工具让我可以混合输入的 mp3 并将结果发送到标准输出管道。 我可以抓取这个混音并立即上传,而无需先将其保存为临时文件吗?
【问题讨论】:
标签: php command-line stdout temporary-files
是否可以从php中的命令行工具获取stdout输出数据?
例子:
我想将服务器创建的动态混合音频文件上传到客户端。 SOX 工具让我可以混合输入的 mp3 并将结果发送到标准输出管道。 我可以抓取这个混音并立即上传,而无需先将其保存为临时文件吗?
【问题讨论】:
标签: php command-line stdout temporary-files
有一个叫passthru()的函数,它将二进制数据直接传递给客户端的浏览器。只需确保您的 php 脚本在数据传递之前放置正确的标头,例如内容类型等。
【讨论】:
我认为您可以做的是使用内存缓冲区来存储 MP3 混音,然后使用 fsockopen 打开一个流到您要上传的服务器,然后手动写入上传文件所需的标题。
为此,您必须重现浏览器在上传文件时通常会构造的相同类型的请求。
这里是 fsockopen 的链接,用户 cmets 包含有关如何执行此类任务的示例:http://php.net/manual/en/function.fsockopen.php
实现此目的的另一种方法是使用 curl 上传文件。我没有为此使用 cURL,但这里有一个示例链接:http://www.akchauhan.com/how-upload-file-using-curl/
【讨论】: