PHP - процесс Apache использует созданный сокет другим процессом

Это мой первый вопрос на этом сайте, поэтому я постараюсь быть максимально ясным.

Мы создаем клиент EPP для взаимодействия со службой Nominet EPP. Nominet ограничивает сеансы, устанавливаемые нами, до 5 сеансов за раз. Источник: http://registrars.nominet.uk/gtlds/gtld-registrar-systems/epp-gtlds

Проблема, которую мы здесь решаем, заключается в том, что мы не можем создавать новый сокет каждый раз, когда приходит новый запрос Apache, потому что у нас может быть 10 пользователей, которые используют эту функцию одновременно.

Сейчас я думаю, что мы реализуем один скрипт, который создает 5 сокетов и поддерживает их в рабочем состоянии, время от времени отправляя команду приветствия в Nominet (очевидно, до тайм-аута). Затем, когда новый процесс создается Apache, этот процесс будет использовать существующие сокеты для отправки команды в Nominet.

Проблема в том, что я провел много исследований, но не могу найти способ сделать это, поэтому я искал кого-то, кто знает больше об этом.

Вот что я нашел, но это не то, что нам нужно (не включая некоторые URL-адреса, которые я забыл сохранить, пока проводил исследование): Потоки PHP, совместно использующие объект центрального сокета

Кто-нибудь знает, как реализовать схему совместного использования сокетов? Я был бы более чем признателен, если кто-то может помочь в этом.

Кроме того, если вы знаете решение на другом языке, сообщите, пожалуйста. Мы открыты для новых языков и архитектуры.

Спасибо :)


person Patompong Savaengsuk    schedule 20.06.2017    source источник
comment
Как ваша связанная ссылка не то, что мы хотим? Мне кажется, что этот код должен решить вашу проблему, как описано.   -  person FKEinternet    schedule 20.06.2017
comment
Новый процесс Apache не будет иметь доступа к серверной переменной, такой как код в stackoverflow.com/questions/34143283/, делает так, что мы не можем использовать его таким образом. Или, может быть, есть способ сделать это, но я не знаю на данный момент.   -  person Patompong Savaengsuk    schedule 20.06.2017
comment
Спасибо, Капсула. Я посмотрю :)   -  person Patompong Savaengsuk    schedule 20.06.2017


Ответы (1)


Наконец-то все заработало, я использую сокет для решения этой проблемы. Вот как:

Процесс A подключается к Nominet и поддерживает подключение. Он также открывает прослушиватель на порту X.

Процесс B (процесс apache) отправит XML процессу A через порт сокета X, затем порт A перенаправит его в открывающий сокет в Nominet и отправит XML обратно процессу B.

person Patompong Savaengsuk    schedule 22.06.2017