用php下载七牛云里的mp3文件的时候,时而可以时而不行,不知道是不是我下载的方式有问题,还是什么,请各位大佬给看一下:
$file_flow = file_get_contents($url);
file_put_contents($save_path . '/' . $filename, $file_flow);
保存在本地的路径是对的,可以在本地生成相应的文件出来,但是有时候文件的大小为0kb,有时候下载下来的文件又是正常的,和七牛里的一样
不知道七牛云有没有下载限制什么的,我是拿同一个七牛的mp3文件进行测试的。
上面两张图片分别打印了成功和失败时候的输出。两个变量一个是七牛的mp3文件地址,另外一个是file_get_contents($url)
获取的值,就是会出现获取值为空的情况。
补充:我是通过ajax请求php异步下载的,并不是那种点击某个a标签同步下载的方式。
刚刚不经意间貌似 察觉到了问题所在:
任何形式文件上传到七牛并转码的时候,转码的文件会先处于七牛的队列中,等待转码处理
但是七牛会即时的给你返回一个
URL
地址,而这个URL地址就是转码完毕后的文件URL因为这个待转码的文件还处于队列中,所以这个返回过来的URL地址 可能还是个空资源
我就是根据即时返回的URL执行下载本地逻辑了,所以导致有时候,获取到的资源为空的情况,因为这个时候文件还处于转码的队列中,还没有完全转码完毕
这时候就需要等待一段时间,再去七牛下载转码过后的文件到本地了
下面是做的测试数据:
结果显示,七牛即时返回的URL过了2s左右,才真正的有资源(也就是转码完成了),我这只是上传的一个几十K的录音文件。
以上均是我的猜测,看到这里觉得我的猜测不对的,欢迎拍砖~~~