Если у вас уже есть ваш ZIP на сервере, и если этот ZIP доступен через Apache в HTTP или HTTPS, то следует перенаправить в этот файл вместо того, чтобы «читать» его с помощью PHP. 1003 *
Это гораздо более эффективно , так как вы не используете PHP, поэтому нет необходимости в ЦП или ОЗУ , и загрузка будет быстрее, поскольку не требуется чтение / запись с помощью PHP, только прямая загрузка. Давайте сделаем всю работу Apache!
Так что хорошей функцией может быть:
if($is_reachable){
$file = $relative_path . $filename; // Or $full_http_link
header('Location: '.$file, true, 302);
}
if(!$is_reachable){
$file = $relative_path . $filename; // Or $absolute_path.$filename
$size = filesize($filename); // The way to avoid corrupted ZIP
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename=' . $filename);
header('Content-Length: ' . $size);
// Clean before! In order to avoid 500 error
ob_end_clean();
flush();
readfile($file);
}
exit(); // Or not, depending on what you need
Я надеюсь, что это поможет.