我构建了一个小脚本来触发下载对话框,如下所示:
<?php
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.'123.txt');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
ob_end_clean();
echo ' ';
flush();
//do something long
//for example
sleep(5);
for($i = 0; $i<10; $i++){
echo $i . PHP_EOL;
sleep(1);
}
如果我将它放入一个名为 download.php 的文件中,它会正常运行;立即弹出下载对话框。
如果我将它放入 Zend Framework Action 并禁用布局和视图渲染,它的行为会有所不同(大约 15 秒后会弹出下载对话框)。
为什么会有这种差异?