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