Отдача файлов PHP скриптов

Ярослав

Новичок
Здравствуйте.

Возникла проблема в отдаче больших файлов. Сервер начинает загибаться.
На данный момент файлы отдаю на подобии:
PHP:
 $downloaded = 0;
 while(!feof($f) and !connection_status() and ($downloaded < $size))
  {
    echo fread($f, 512000);
    downloaded += 512000;
    flush();
  }

Была бы статика, про проблему можно было бы забыть используя nginx.
Сам файл очень интерестный. Он как бы складываеться из двух частей.
Первая часть динамическая. Например нужно изменить определенный токен в файле.
Вторая часть - статика. Тоисть после отдачи первой части можна было бы пустить в бой nginx.
Только вот проблема - незнаю как связать все это в кучу.
Читал что можно контроллировать доступ с помощю апача и потом редиректить на нгинкс через X-Accel-Redirect. Но я не могу выдать динамику до того момента как пошлю X-Accel-Redirect.
Какие решения сучествуют?

PS. Установить какой-нибудь модуль/разширение не проблема.
 
Ярослав
readfile не читает весь файл в память.
 
zerkms
Каюсь, недосмотрел.
Но это не решает мою проблему.
К примеру я выдам 1 мегабайт динамики через readfile. Как потом остальной контент вывести через nginx?
 
Ярослав
никак,отдай 1 МБ динамики через echo и 100500 МБ статики через readfile
 
PHP:
$rFile = @fopen($sStoreName, 'r');
$rOutput = fopen('php://output', 'w');
if($rFile)
{
	header('Content-Disposition: attachment; filename='.$sName);
    stream_copy_to_stream($rFile, $rOutput);
	exit();
}
те просисходит копирование файла напрямую, при этом не кушается память совсем, докачку можно тоже реализовать через fseek
 
Сам файл очень интерестный. Он как бы складываеться из двух частей.
Первая часть динамическая. Например нужно изменить определенный токен в файле.
Вторая часть - статика. Тоисть после отдачи первой части можна было бы пустить в бой nginx.
Только вот проблема - незнаю как связать все это в кучу.
Читал что можно контроллировать доступ с помощю апача и потом редиректить на нгинкс через X-Accel-Redirect. Но я не могу выдать динамику до того момента как пошлю X-Accel-Redirect.
Какие решения сучествуют?

1) http://sysoev.ru/nginx/docs/http/ngx_http_addition_module.html
2) встроенный perl http://sysoev.ru/nginx/docs/http/ngx_http_perl_module.html
 
X-Accel-Redirect тут не к месту - если перед выдачей статики будут идти данные, заголовок не отправить
 
Сверху