Можно ли так сделать на js и php?
если переход на другую страницу случился то тот запрос уже не ответит. Можно сделать доп метод который будет возвращать результат и дергать его раз в секунду например, ну или вебсокеты. Вообще обычно кидается в очередь и асинхронно обрабатывается например другим сервисом, потом в другую очередь ответы кидаются или пишется в базу результат.  + впринципе долгий запрос может по таймауту клиента отвалиться, он выполнится, но результат потеряется
Самое простое, результат выполнения php скрипта сохранять в базе. При помощи js запрашивать результат, с определенной периодичностью, например, раз в минуту.