multirequest icon indicating copy to clipboard operation
multirequest copied to clipboard

Multi-thread connection pooling

Open KoteKotlyarov opened this issue 6 years ago • 1 comments

Вопрос наверное даже не по либе, а по самому PHP. Если не сложно, подскажите.

Я знаю что CURL либа супортит шаринг TCP конекшенов и если нам нужно сделать N запросов, то мы может один раз сделать curl_init и после чего выполнять эти запросы, меняя только базовые параметры. Когда закончили - вызываем curl_close. В этом случае сама либа CURL будет юзать тот же самый TCP конекшен, который она открыла при первом запросе.

Но можно ли шарить эти конекшены между разными PHP реквестами ?

У меня есть сервер, на нём десятки сайтов. Каждая страница должна делать 1 запрос на сторонюю API. Будет ли эта логика тут работать ? Могут ли разные PHP реквесты обращаюсь в CURL либу, по сути шарить между собой конекшены или нет ?

И вообще реально ли такое сделать ?

Я знаю что PHP может работать в 2х режимах:

  • На каждый запрос создаётся отдельный процесс.
  • "Родитель"" создаёт несколько воркеров, между которыми распределяет эти самые реквесты. Воркеры по завершению работы не закрываются. И даже имеют внутренний кеш, в котором могут хранить различные данные (к примеру конекшены в БД)

Ведь если для каждого реквеста мне нужно делать запрос в АПИ, то количество сокетов возрастёт в два раза (на каждый реквест - запрос в АПИ). И поскольку сокеты система сразу не освобождает, то будет проблема в доступных сокетах.

Что Вы можете подсказать по этому вопросу ?

KoteKotlyarov avatar Oct 16 '18 13:10 KoteKotlyarov

Обновил вопрос

KoteKotlyarov avatar Oct 16 '18 14:10 KoteKotlyarov