Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在创建文件时读取PHP中的file()(mp3)_Php_Mp3_Readfile - Fatal编程技术网

如何在创建文件时读取PHP中的file()(mp3)

如何在创建文件时读取PHP中的file()(mp3),php,mp3,readfile,Php,Mp3,Readfile,我想设置一个脚本,使用PHP中的readfile函数读取mp3文件。唯一的问题是,我不想等到mp3文件编码完成后才开始为最终用户阅读。假设您是将编码器作为一个独立于PHP的进程生成的,那么您应该使用它来完成此操作,并指示它在标准输出处输出编码。然后,您可以在表示编码器标准输出的管道上轻松使用fread,并将读取的内容转发到浏览器 大概是这样的: // Assuming that you have already sent the proper // HTTP headers to serve

我想设置一个脚本,使用PHP中的readfile函数读取mp3文件。唯一的问题是,我不想等到mp3文件编码完成后才开始为最终用户阅读。

假设您是将编码器作为一个独立于PHP的进程生成的,那么您应该使用它来完成此操作,并指示它在
标准输出处输出编码。然后,您可以在表示编码器标准输出的管道上轻松使用
fread
,并将读取的内容转发到浏览器

大概是这样的:

// Assuming that you have already sent the proper 
// HTTP headers to serve a download earlier

$handle = popen('encoder --param --output-to-stdout', 'r');
while (!$feof($handle)) {
    echo fread($handle, 2048); // or some other size, doesn't really matter
}
pclose($handle);

我认为,您应该使用另一个可以检查tmp dir的函数。编码是由python执行的,它在开始编码之前只返回文件名和路径。有没有一种方法可以在不涉及任何输出流的情况下做到这一点?@AdamCarpentieri:我无法100%自信地回答,但我相信没有。这将取决于许多因素,其中大部分不在你的控制之下。尝试
fopen
fread
,如果有效:很好,如果不行:你运气不好。