Используйте микросервисную архитектуру. Тогда можно отправить URL в очередь сообщений, потребителем которой может являться программа на любом языке программирования: Go, Java, C#, ... что хочешь. Хоть язык Nim.
При получении URL (в JSON) программа скачает документ, распарсит или что задумаешь. Результат поместит куда необходимо: в другую очередь, СУБД, файл или другое.
В случае ошибки можно отправить JSON в очередь ошибок, которую может "прослушивать" программа на PHP или любая другая.
Это асинхронная модель обработки данных.
Альтернативный вариант, который часто используют в монолитном ПО - делают системный вызов внешнего процесса: gzip, ffmpeg, ... и получают вывод код ошибки и, если необходимо, stdout.
В данном случае, синхронная модель обработки данных. Получение результата блокируется вызываемым процессом и пока он не завершится, PHP будет удерживать открытое HTTP соединение.