断点续传

断点续传

断点续传就是使浏览器分段下载文件的一种实现方式。在 HTTP/1.1 开始支持。当我们需要下载很大的文件时,如果一次性将文件取出然后返回给客户端,一般会导致OOM错误。此时我们就需要断点续传的技术将数据分批输出。

断点续传主要用到HTTP请求头中的content-range 字段,具体见下方代码注解

<?php

$filesize = filesize("./logs/2020-06-09.log");
header("Content-type: application/octet-stream");		// 二进制流数据
header(sprintf('content-length:%u', $filesize));		// 指明文件的大小
// 用于响应头,指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。
header(sprintf('content-range:bytes %s-%s/%s', 0, 1024, $filesize));
$f = fopen("./logs/2020-06-09.log", 'r');
while (!feof($f)) {
  echo fread($f, 1024);
  ob_flush();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于使用DataX实现断点续传,可以按照以下步骤进行操作: 1. 配置源数据源和目标数据源的断点续传属性: - 对于关系型数据库,可以在DataX的作业配置文件中设置`jdbcUrl`后面加上参数`?useCursorFetch=true&defaultFetchSize=1000&rewriteBatchedStatements=true&socketTimeout=0&allowMultiQueries=true&continueOnError=true`,其中`socketTimeout=0`表示取消数据读取超时限制。 - 对于非关系型数据库或文件系统,可以设置DataX的插件参数,例如HDFS插件可以设置`dfs.client.block.write.replace-datanode-on-failure.policy=NEVER`。 2. 对于断点续传的源表和目标表,需要在DataX的作业配置文件中配置断点续传的字段。在源表和目标表中添加一个类型为`VARCHAR`的字段,用于记录断点续传的位置。 3. 在DataX的作业配置文件中,通过`reader.parameter`和`writer.parameter`配置断点续传的参数。对于关系型数据库,可以使用类似`WHERE id > '${bizdate}'`的方式指定断点续传的位置。对于非关系型数据库或文件系统,可以通过指定文件偏移量或其他方式来实现。 4. 在执行DataX作业之前,需要检查断点续传字段的值。如果是首次执行,可以将断点续传字段的值设为初始值;如果是继续执行,可以将断点续传字段的值设为上次执行的位置。 5. 执行DataX作业时,DataX会根据断点续传字段的值来选择从哪个位置开始读取源数据,并将读取位置保存在断点续传字段中。如果任务失败或中断,可以根据断点续传字段的值重新执行任务,从上次中断的位置继续读取数据。 通过以上步骤,你可以使用DataX实现断点续传功能。注意在不同的数据源和插件中,参数配置方式可能会有所不同,具体可以根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值