Суть такова. Есть форма, которую заполняет пользователь. После этого он должен быть перенаправлен на следующую форму, но только после того, как сторонний сервис, через вебхук получивший данные с первой формы, вернет нам определенные данные, которые мы будем использовать во второй форме. И нужно организовать получение скриптом перенаправления тех самых данных и только после этого собственно совершать само перенаправление. Ключевой момент тут в том, что событие происходит вне потока исполнения скрипта, который его должен контролировать.
Если более конкретно, то есть php-скрипт#1, на который происходит редирект пользователя после заполнения и отправления им формы на одном из сервисов вроде Google Forms. Одновременно с этим данные через вебхук от сервиса форм уходят в Zapier, который совершает отправку данных из первой формы в одну из CRM и потом совершает вебхук на php-скрипт#2, передавая полученные от CRM id сделки и id контакта.
И как наш php-скрипт#2 получит эти данные, он их должен передать неким образом в php-скрипт#1, а тот уже подставить их в адрес редиректа и собственно совершить его. Первым делом пришла самая банальная мысль, создавать в php-скрипт#2 некий файл, куда записывать полученные значения, а в php-скрипт#1 соорудить цикл, проверяющий ближайшие 20 секунд, не создался ли файл с неким именем, забирать из него данные и удалять его.
Но схема, прямо скажем, пахнет костылями. В итоге хочется найти некий вариант, когда мы в php-скрипт#1 подписываемся на некое событие и ждем его, пока что оно не случится (конечно, не дольше, чем ограничено настройками исполнения php скриптов на вебсервере), а в php-скрипт#2 рождаем это событие. Как это возможно реализовать средствами php и некими SDK от тех или иных продуктов?
Думаю, может быть посмотреть в сторону Redis, с его схемой "ключ-значение", но можно ли там организовать что-то вроде подписки на ожидание появления ключа? Когда будет достаточно, используя их SDK в том или ином виде, написать что-то вроде:
$redisDrv->when("found", $key, function () {
// do something;
})
Устраивать цикл, который будет опрашивать хоть Redis, хоть MySQL, хоть что угодно еще, не хочется, с таким же успехом я могу использовать цикл, в котором буду искать тот самый файлик. Хочется попробовать именно некую подписку на событие где-либо.