Некоторое время спустя сервер A получает HTTP-запрос обратного вызова от сервера B. Сервер B ожидает (немедленного) HTTP-ответа с кодом состояния 200. Затем эта часть заканчивается, пока сервер A должен завершить обработку данных полученные от сервера B.
Помещение данных в какую-то очередь и периодический запуск задания cron для просмотра очереди и работы с данными здесь не подходит, главным образом потому, что данные а) должны обрабатываться немедленно, и б) события происходят редко (задание cron в большинстве случаев будет выполняться впустую).
Итак, я подумал об использовании fork() для создания дочернего процесса. Родительский процесс затем ответит серверу Б, в то время как дочерний процесс будет работать с данными.
Итак, вот код без деталей обработки:
Код: Выделить всё
Мне неясно состояние сетевого подключения в дочернем процессе. Согласно ручному поведению (обычному fork()), дочерний элемент наследует все дескрипторы открытых файлов, включая сетевые подключения (если я не ошибаюсь).
Возможно, "pcntl_unshare()" должен использоваться для отключения сетевых подключений от родителя? К сожалению, такие параметры, как «CLONE_NEWNET», похоже, не описаны в руководстве.
Любые мысли и советы приветствуются
Подробнее здесь: https://stackoverflow.com/questions/798 ... ntinue-bac
Мобильная версия