php调用输出数据流,可以传递给特殊输出流php://输出的数据量有限制吗?

我目前正在为通过webapp生成的报告测试一个新的CSV导出功能。相关的代码看起来如此:

$my_report_data = ReportDAO::runCampaignAnalysis($campaign_id, $start_date, $end_date);

$this->getResponse()->clearHttpHeaders();

$this->getResponse()->setHttpHeader('Content-Type', 'application/vnd.ms-excel');

$this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename='export.csv');

$outstream = fopen("php://output", "w");

function __outputCSV(&$vals, $key, $filehandler) {

$retval = fputcsv($filehandler, $tempArray);

if($retval == FALSE) {

error_log('Uh oh, spaghetti o!');

error_log('The current line being processed is: ' . join('|', $vals));

}

}

array_walk($my_report_data, "__outputCSV", $outstream);

fclose($outstream);

return sfView::HEADER_ONLY;$ my_report_data仅仅是一个seen here形式的多维数组。

该代码完美适用于小数据集,例如100行及以下(不太确定不幸的是截止点在哪里)。使用更大的数据集;然而,当我尝试导出到CSV时,我的浏览器不会显示“文件打开/保存”对话框,原始报告内容会显示在网页上。

我已经用Firefox的'Live HTTP Headers'插件检查了HTTP标头,发现对于较大的数据集,标头设置不正确并显示为'text / html; charset = utf-8'而不是'application / vnd.ms-excel'。非常奇怪。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值