думаю нужно больше информации, чтобы понять, для чего, в данном случае, используется рнр и зачем там go
недавно делал что-то похожее: на сервак приходит tar.bz2 архив, в нем текстовые файлы с данными, таких архивов в течении часа собирается достаточно много, данные текстовые нужно прочитать и положить в 2 таблицы: подробная и обобщенная, и для полученных данных выполнить некоторые генерации .json-файлов и .md5 рнр-скриптом, который лет 5 используется в многих местах
времени было мало, сделал по тупому :)
1. go-рутина крутиться и читает каждые 5-10 сек (точно не помню) спец.папку куда ложим архивы, если архив есть - создается файл archive-name.log и начинается процесс расспаковки и т.п.
2. сам процесс работы нужно отображать в браузере, сокеты использовать времени не было, получилось просто: ажакс отправляет запрос с id-архивом, и читает лог-файл с нулевого места или с места последнего чтения, так как если более 30сек скрипт выполняется - апач вываливал gateway timeout.
3. когда go-приложение заканчивало свою работу - создавался файл archive-id.done и вызывается рнр-скрипт с помощью exec.cmd
4. когда клиент читал лог по ИД ресурса и есть файл *.done - считалось, что клиент получил всю инфу, и создавался еще один файл .finished
5. горутина из пункта 1) кроме поиска архива, ищет .finish и .done, если такое есть - удаляет использованнЫе данные.
таким образом удалось в течении нескольких часов скрестить старый рнр-скрипт с go-приложением, отображать в браузере прогресс операции, и избавиться от некоторых других проблем.
работает в результате все очень быстро.