Сценарий выглядит следующим образом:
Вызов на указанный URL, включая Id
известного SearchDefinition
, должен создать новую запись Search
в БД и вернуть новый Search.Id
.
Перед возвратом Id
мне нужно создать новый процесс / запустить асинхронное выполнение файла PHP, который принимает новый Search.Id
и выполняет поиск.
Затем пользовательский интерфейс опрашивает3-й PHP-скрипт для получения статуса поиска (2-й скрипт продолжает обновлять запись поиска в БД).
Это вызывает у меня проблему с порождением 2-го PHP-скрипта в асинхронном режиме.
Я собираюсь запустить это на стороннем сервере, так что имею небольшой контроль над разрешениями.Поэтому я предпочел бы избегать задания cron / аналогичного опроса для новых записей поиска (и мне не очень нравится опрашивать, если я могу его избежать).Я не большой поклонник необходимости использовать веб-сервер для работы, которая не связана с Интернетом, но во избежание проблем с разрешениями это может потребоваться.
Это, кажется, оставляет мне 2 варианта:
- Вызов 1-го сценария возвращает Id и закрывает соединение, но продолжает выполнение и фактически выполняет поиск (т.е. придерживается сценария 2 в конце сценария 1, но закрывает ответ в точке добавления)
- Launchвторой PHP-скрипт в асинхронном режиме.
Я не уверен, как можно было бы выполнить что-либо из вышеперечисленного.Первый по-прежнему чувствует себя отвратительно.
Если для фальсификации веб-звонка необходимо использовать CURL или что-то подобное, я сделаю это, но я надеялся на какой-нибудь удобный многопоточный подход, когда я просто создаю новыйнаправьте его на соответствующую функцию, и права доступа будут унаследованы от вызывающей стороны (т. е. пользователя веб-сервера).