Если честно, то реализация ужасная!
readfile() читает В БУФЕР и выдаёт клиенту содержимое уже из буфера. И пока клиент не получит, буфер будет заполнен файлом и более того, если одновременно будет запрошено 1000 файлов по 2 Мб каждый... Думаю представляете сколько памяти потребуется для этого...
В место readfile() подменяйте ссылку (редирект) и возвращайте файл сервером. Т.о. настоящую ссылку на файл никто не увидит и файл будет отдаваться сервером, что однозначно лучше чем php скриптом.
Только через консоль.
Ну по крайней мере я не знаю другого способа на PHP.
system('zip -P pass file.zip file.txt');
Где:
pass - пароль
file.zip - имя архива (который будет создан)
file.txt - файл который будет добавлен в архив
Я установил альтернативные версии PHP, но не могу их выбрать в конфиге сайта.
Можно полюбопытствовать, как вы их установили?
Если через ISP, то там же и можно переключаться между версиями. И выбирать нужно версии PHP, а не режим работы!