如何处理同时阅读和写作

时间:2014-07-19 01:43:01

标签: php file audio streaming mp3

我有一台服务器从源获取mp3音频缓冲区并通过php将其写入文件。它会截断文件的开头,因此文件大小永远不会超过2 MB。同时,客户端通过寻找到最后并且读取是否有任何新数据来流式传输mp3。问题是当文件被截断时客户端正在读取更改的位置。

这是流式传输音频的客户端:

$handle = fopen('cool.mp3', "r");
$err = fseek($handle, 0, SEEK_END);
while(file_exists($file_lock)){ // cool.mp3.lock means stream is still going
    $data = fread($handle, 1024);
    echo $data;
    ob_flush();
    flush();
}

我在服务器上使用它来写入数据:

$data = "audio frames....";
clearstatcache();
$file = 'cool.mp3';
if(filesize($file) > 1024*200){ //2 MB
    ftruncatestart($file, 1024*25); //Trim Down By Deleting Front
}
file_put_contents($file, $data, FILE_APPEND); 

0 个答案:

没有答案