PHP 利用MongoDB GridFS存储大文件遇到的问题???有没有人遇到过。

时间:2021-10-16 19:52:51
//省略部分代码,关键代码如下。
$file_data = array(
            'file_unique_id'  => $file_unique_id,
            'file_md5'            => $file_md5,
            'file_name'          => $filename,
            'file_type'             => $file_type,
            'appid'                  => $appid
);

try{
           $file_id = $grid->storeFile($_FILES['zero_file']['tmp_name'],$file_data);//fs.chunks无碎片
 }catch(MongoException $e){
           echo json_encode(array(
                    'code'     => 30007,
                    'errmsg' => 'storage exception',
                    'info'       => $e->getMessage()
           ));
 }

在存储小于80兆文件时一点问题都没有,但是当文件大小到达90兆、100兆时就会抛出异常,如下:
[align=left]Array
(
    [code]       => 30007
    [errmsg]   => storage exception
    [info]         => Could not store file: MongoGridFS::storeFile(): php_network_getaddresses: getaddrinfo failed: Name or servicenot known
)

有没有大神遇到过??

11 个解决方案

#1


都说MongoDB的Grid FS可以存储大文件,可为什么我这里报错。还是我代码有问题。

#2


在存储小于80兆文件时一点问题都没有,但是当文件大小到达90兆、100兆时就会抛出异常

既然小的文件可以估计和设定有关,

#3


chunkSize 你设置了多大?

#4


这跟chunkSize的设置没有关系吧,我用的是默认的大小,好像是256kb吧,它主要是文件大小一到90兆就不稳定了,捕获到的异常
Could not store file: MongoGridFS::storeFile(): php_network_getaddresses: getaddrinfo failed: Name or srvicenot known

感觉又是php的问题,但是小于80兆的文件存储都非常稳定。

#5


引用 2 楼 fdipzone 的回复:
在存储小于80兆文件时一点问题都没有,但是当文件大小到达90兆、100兆时就会抛出异常

既然小的文件可以估计和设定有关,


引用 3 楼 fdipzone 的回复:
chunkSize 你设置了多大?


这跟chunkSize的设置没有关系吧,我用的是默认的大小,好像是256kb吧,它主要是文件大小一到90兆就不稳定了,捕获到的异常
Could not store file: MongoGridFS::storeFile(): php_network_getaddresses: getaddrinfo failed: Name or srvicenot known

感觉又是php的问题,但是小于80兆的文件存储都非常稳定。

#6


可能是超时了

#7


引用 6 楼 xuzuning 的回复:
可能是超时了


应该不是,捕获到的异常可说明吧。

#8


Name or srvice not known
不知道这样的服务器

显然是连接后又断开了,那么什么情况会这样呢?
要不超时,要不崩溃

#9


引用 8 楼 xuzuning 的回复:
Name or srvice not known
不知道这样的服务器

显然是连接后又断开了,那么什么情况会这样呢?
要不超时,要不崩溃


我刚刚把超时时间调大了,还是不行。崩溃也可以排除都是正常的。

#10


你这个运行多久出现?

#11


引用 10 楼 fdipzone 的回复:
你这个运行多久出现?


6秒左右吧

#1


都说MongoDB的Grid FS可以存储大文件,可为什么我这里报错。还是我代码有问题。

#2


在存储小于80兆文件时一点问题都没有,但是当文件大小到达90兆、100兆时就会抛出异常

既然小的文件可以估计和设定有关,

#3


chunkSize 你设置了多大?

#4


这跟chunkSize的设置没有关系吧,我用的是默认的大小,好像是256kb吧,它主要是文件大小一到90兆就不稳定了,捕获到的异常
Could not store file: MongoGridFS::storeFile(): php_network_getaddresses: getaddrinfo failed: Name or srvicenot known

感觉又是php的问题,但是小于80兆的文件存储都非常稳定。

#5


引用 2 楼 fdipzone 的回复:
在存储小于80兆文件时一点问题都没有,但是当文件大小到达90兆、100兆时就会抛出异常

既然小的文件可以估计和设定有关,


引用 3 楼 fdipzone 的回复:
chunkSize 你设置了多大?


这跟chunkSize的设置没有关系吧,我用的是默认的大小,好像是256kb吧,它主要是文件大小一到90兆就不稳定了,捕获到的异常
Could not store file: MongoGridFS::storeFile(): php_network_getaddresses: getaddrinfo failed: Name or srvicenot known

感觉又是php的问题,但是小于80兆的文件存储都非常稳定。

#6


可能是超时了

#7


引用 6 楼 xuzuning 的回复:
可能是超时了


应该不是,捕获到的异常可说明吧。

#8


Name or srvice not known
不知道这样的服务器

显然是连接后又断开了,那么什么情况会这样呢?
要不超时,要不崩溃

#9


引用 8 楼 xuzuning 的回复:
Name or srvice not known
不知道这样的服务器

显然是连接后又断开了,那么什么情况会这样呢?
要不超时,要不崩溃


我刚刚把超时时间调大了,还是不行。崩溃也可以排除都是正常的。

#10


你这个运行多久出现?

#11


引用 10 楼 fdipzone 的回复:
你这个运行多久出现?


6秒左右吧