php 分段下载文件,一个关于 PHP 输出文件 下载时可以分段输出下载的疑问?

d9dc847e1757a5431f61e381c6aeab7e.png

public function exportCsv()

{

header("text/comma-separated-values;charset=UTF-8");

header("Content-Disposition:attachment;filename=log.csv"); //“生成文件名称”=自定义

header("Content-Description:File Transfer");

header('Content-Type:text/comma-separated-values;charset=UTF-8');

header('Cache-Control:must-revalidate,post-check=0,pre-check=0');

header('Expires:0');

header('Pragma:public');

header('content-transfer-encoding:binary');

echo "昵称, 头像, 纬度, 经度, 微信城市, 所在点, 检测点, 性别, 时间\r\n";

$this->getSearchModel()->chunk(100, function ($logs) {

foreach ($logs as $log) {

echo $this->echoBy($log->nickname).',';

echo $this->echoBy($log->avatarurl).',';

echo $this->echoBy($log->latitude).',';

echo $this->echoBy($log->longitude).',';

echo $this->echoBy($log->city).',';

echo $this->echoBy($log->point_city).',';

echo $this->echoBy($log->point).',';

echo $this->echoBy($log->sex).',';

echo $this->echoBy($log->created_date)."\r\n";

}

});

}

我用这个方法输出csv格式的文件

其中用了laravel的分块方法 得出的效果是 100条100条的从数据库拿数据 减小内存占用

用的时候有意想不到的效果

好像循环第一次输出的时候 就可以下载了 这个方法的实际效果是边执行边下载

但是对于php来说不是会 等这个方法执行完一起输出的么

这个疑问请明白其中原理的大神 解答下我的困惑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值