1) увеличить время выполнения скрипта (в настройках веб-сервера, погуглить можно например так "время выполнения php скрипта nginx/apache"). Не очень хороший способ.
2) страница должна загружаться, потом с помощью ajax устанавливаются флаги "запуск/остановка". Скрипт на сервере запускается кроном каждую минуту и проверяет флаги, если стоит запуск и с скрипт еще не работает, то он запускается. Дальше запущенный на сервере скрипт пишет свой статус, который открытая страница читает и выводит на твою страницу. Флаги и статус, можно хранить в файлах или бд
3) похож на 2, только для соединения используется не ajax а websockets, при этом после запуска скрипта он может напрямую моментально отдавать ответ на страницу