если мне служили большим загрузкам файла с апачским сервером, есть ли способ перезапустить/перезагрузить http сервер (например, с новым обновлением httpd.conf), не прерывая продолжающиеся загрузки файла? или, по крайней мере, позвольте, чтобы клиенты возобновили загрузки?
Обычная загрузка происходит в одном TCP-соединении, нет «универсального» способа перезапустить apache и поддерживать это единственное соединение.
НО если вы запустите
apachectl -k graceful
или отправите сигнал USR1
вашему главному процессу apache, затем он будет корректно перезагружен, это означает, что он завершит обслуживание текущих запросов, а затем перезагрузится.
На уровне протокола http можно запросить только часть файла.
Клиент может послать на сервер запрос HEAD
для данного файла. Если сервер отвечает Accept-Ranges: bytes
и заголовком Content-Length
, то клиент может перейти к отправке запроса GET
, используя Диапазон: байты = ...
заголовок для получения той части файла, которую он хочет. Сервер ответит частичным содержанием файла и поместит в свой ответ статус 206.
Известно, что Internet Explorer и Firefox делают это для обычных загрузок, когда вы запрашиваете браузер возобновить загрузку.