Zend Framework で大きなファイルをダウンロードしたい
ホームページをtarでバックアップしてZend Frameworkでダウンロードしたいのですが、
http://php.benscom.com/manual/ja/function.readfile.php
を参考に次の様にしてみたところ、数Mbyte程度のファイルはダウンロードできましたが大きなファイル(200Mbyte)ではエラーになりました。
public function DownloadAction(){
$file = "test.bin";
$this->_helper->viewRenderer->setNoRender();
$response = $this->getResponse();
$response->clearAllHeaders();
$response->clearBody();
$response->setRawHeader('Content-Description: File Transfer');
$response->setRawHeader('Content-Type: application/octet-stream');
$response->setRawHeader('Content-Disposition: attachment; filename='.basename($file));
$response->setRawHeader('Content-Transfer-Encoding: binary');
$response->setRawHeader('Expires: 0');
$response->setRawHeader('Cache-Control: must-revalidate, post-check=0, pre-check=0');
$response->setRawHeader('Pragma: public');
$response->setRawHeader('Content-Length: ' . filesize($file));
$response->sendHeaders();
$response->setBody(file_get_contents($file));
$response->outputBody();
}
それで
$response->setBody(file_get_contents(&$file));
$response->outputBody();
の部分を
$handle = fopen($file, "rb");
$contents = '';
while (!feof($handle)) {
$contents = fread($handle, 8192);
$response->setBody($contents);
$response->outputBody();
}
fclose($handle);
とかにしてみましたがこれもファイルが途中で切れてしまいました。
php.iniのメモリ量を増やす以外に、何か方法がありますでしょうか?