Вы можете использовать X-SendFile для получения наилучшей производительности.Поддерживается Apache (mod_xsendfile), Lighttpd и Nginx.Сначала запрос обрабатывается процессом php, который помещает специальный заголовок (X-Sendfile или X-Accel-Redirect для Nginx), а когда сценарий завершается, веб-сервер вступает во владение и отправляет файл как статический файл.Это быстрее и использует меньше памяти.
Чтобы перенаправить весь запрос к вашему контроллеру, вам нужно написать собственный маршрут в вашем загрузчике:
protected function _initRouter()
{
$router = Zend_Controller_Front::getInstance()->getRouter();
$documentRoute = new Zend_Controller_Router_Route(
'document/:filename',
array(
'action' => 'xsendfile',
'controller' => 'documents'
),
array(
'filename' => '\..+$'
)
);
$router->addRoute('document', $documentRoute );
return $router;
}
Вы можете использовать этот помощник действий дляобработайте заголовок x-sendfile: http://www.zfsnippets.com/snippets/view/id/27, и вам нужен код для проверки подлинности пользователя.