tp5 redis 上传大文件到68%就中断了

100M 以上文件,8分片上传了4个就中断了

#定义键名
            
            @set_time_limit(5 * 60);
            
            #设置超时300秒
            
            $redis_key = $this->file_name;
            
            
            #扩展名
            $file_name  = explode('.', $this->file_name);
            
            #碎片文件
            $save_tmp_name = $this->file_path.$this->fileMd5.'/'.$file_name[0]."_".$this->blobNum;
            
            //文件名拼接成第几块
            
            $this->touchDir();
            
            
            #临时文件
            
            $tmp_file_path = $_FILES['file']['tmp_name']; 
            
            #移动具体位置
            
            move_uploaded_file($tmp_file_path, $save_tmp_name);
            
            #进入redis 环节
            
            $store =Cache::store('redis');
            
            #一个小时后过期

   $store =Cache::store('redis');
            
            #一个小时后过期
            
            $store->Expire($redis_key, 600);
            
            #获取chunk值
            
            $order = $this->chunk_index;
            
            #增加有序集合
            
            $store->zAdd($redis_key, $order, $save_tmp_name);
        
            #获取集合数量
            $uploaded_count = $store->zCard($redis_key);
            
            
            $all_pian = $store->zRange($redis_key, 0, -1);
            
            
            Log::record('all_pian:' . var_export($all_pian, true), 'info');
            
           sleep(120);
           

主要分片上传不完,只能上传一部分。延时只能保证100m 内文件分片上传完成,超过100m 就不行了,补充下,上传限制配置 都已经配置500m 不存在哪个方面的问题

阅读 2.2k
1 个回答

是不是php脚本执行时间超时了,你在tp5入口文件顶部加上
ini_set("max_execution_time", "0");或者set_time_limit(0);
这种不限制php脚本执行时间,如果这样上传成功的话,你就应该考虑一下上传的方式了。或者限制上传的大小。然后一般正常商用项目,上传都是走对象存储服务,不会上传到服务器来占用服务器带宽的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题