Генерация архивов на лету

Vadya

Новичок
Генерация архивов на лету

При каждом запросе скрипта необходимо в уже существующий архив (3mb) подкладывать индивидуальный файл и отдавать его. Но тогда возникает проблема. При одновременных запросах получится путаница (один качает, другой в это время изменяет). Посоветуйте в каком направлении мыслить. Не забывая о ресурсоемкости.
 

Alexandre

PHPПенсионер
два варианта
отдавать архив потоком:
- скрипт считал архив,
- разархивировал
- добавил индивидуальный фойл
- заархивировал
- отдал потоком
вариант 2, менее лучший но более простой
- скопировать во временный файл,
- отдать ссылку временного файла
- потом уничтожить
 

Vadya

Новичок
Alexandre, спасибо, первый способ мне кажется удачней

Тем более, второй подпункт "разархивировал" я могу пропустить.

Но я правильно понимаю, что в первом варианте архив все время закачки будет сидеть в оперативке и не будет возможности докачки?
 

Yuriy_S

-=PHP-Club=-
Alexandre
разархивировать вовсе необязательно, можно просто добавить файл к архиву.
 

Alexandre

PHPПенсионер
Yuriy_S согласен
разархивация лишняя, если АПИ позволяет

Но я правильно понимаю, что в первом варианте архив все время закачки будет сидеть в оперативке и не будет возможности докачки?
возможности докачки по HTTP в принципе не существует...
 

Alexandre

PHPПенсионер
разные понятия "частичного запроса" и докачки
если соединение полетело, то и "докачка" в вашем случае накрылась.
в моем понимании докачка - это возможность скачать после возобновления соединения, те докачать.

для сервера абсолютно по барабану откуда брать Range
из файла или из скрипта, передающему ему теже байты, только фильтруй и выбирай нужный тебе Range ...
 

newARTix

Новичок
в моем понимании докачка - это возможность скачать после возобновления соединения, те докачать.
а чем новый HTTP запрос отличается от восстановления соединения? Да, по сути это не является "продолжением работы", это абсолютно новый запрос (правда с теми же куками), однако именно такую возможность, я и понимаю под "докачкой".
Насчет того что "серверу по барабану", помоему ничто не мешает нам организовать работу с заголовком Range именно в php-скрипте. А серверу в большинстве случаев все "по барабану"...

Однако, в данном случае, конечно, такие навороты врядли нужны, просто теоретически... :)
 

Alexandre

PHPПенсионер
а чем новый HTTP запрос отличается от восстановления соединения? Да, по сути это не является "продолжением работы", это абсолютно новый запрос (правда с теми же куками), однако именно такую возможность, я и понимаю под "докачкой".
а кто в куки будет проставлять кол-во прочитанных байт? ни сервер ни браузер не знают точное кол-во отданных байт на момент прерывания соединения. Можно отдавать блоками и аяксом как-то сообщать серверу кол-во переданных блоков или как-то на клиенте это писать в куку. Но, как организовать сбор всех этих блоков воедино в файл, я не представляю...
это так - чисто теоретические рассуждения. По этому, как работает докачка после прерывания соединения по HTTP - я не представляю.
 

Lews

Новичок
А зачем количество отданных байт? Надо количество принятых, их-то браузер знает.
 
Сверху