请教 Storage 使用 sftp 驱动上传大文件超时该如何解决?

Storage 使用 sftp 驱动上传大文件(35M)超时该如何解决?已经在filesystems.php 配置文件里设置了超时时间,但是上传后的文件不完整.

[
    'driver' => 'sftp',
    'host' => env('CHANGYIN1_SFTP_HOST'),
    'port' => (int) env('CHANGYIN_SFTP_PORT', 0),
    'username' => env('CHANGYIN_SFTP_USERNAME'),
    'password' => env('CHANGYIN_SFTP_PASSWORD'),
    'maxTries' => 4,
    'timeout' => 600,
],
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 13

三个方案:

  • 前端上传到服务器,服务器再通过异步任务或者定时任务来上传(存在一定延迟,且比较难通知前端)
  • 前端上传到服务器,调整 PHP 的最大执行时间,登台服务器上传完成,再响应给前端
  • 采用类 S3 的存储方案,比如开源的 MinIO,后端生成预签名上传 URL(包含一次性身份信息),返回给前端,前端拿着这个 URL 将文件上传到这个 URL!

如果文件较大的话,建议用第三种,文件不用再服务器上中转了,前端可以更好的控制整个上传流程,包括实时文件上传进度,文件分片上传等等!

10个月前 评论
高延迟战神 10个月前
GeorgeKing (作者) 10个月前

服务器上行速率太低了,如果要存储到本地服务器,不升级带宽,用什么方案都很慢,可以的话,还是上OSS,一般前端的宽带配置比较高,可以前端来上传文件到OSS,业务服务器不要干这种耗费流量的业务,拆出去单独处理。

10个月前 评论
普罗米修斯 (楼主) 10个月前
lovewei (作者) 10个月前

阿里云OSS

10个月前 评论
普罗米修斯 (楼主) 10个月前

分片【分小块】上传上去 同时可以并发上传

10个月前 评论

服务器往 sftp上传时 使用二进制上传,这是虚拟主机时代就有的问题,FTP上传文件不使用二进制上传或多或少都有点问题。

10个月前 评论

@Larva 代码里如何设置二进制上传?文件小上传没问题,文件大上传的文件就不完整。 file

10个月前 评论

开台内网服务器,然后由内网服务上传,不影响主服务

10个月前 评论

如果分块上传和增加超时时间还是会超时文件不全,就应该联系对方,问一下是不是他那边服务器设置了比较短的超时时间导制

10个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!