Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Шаринг HTTP/TCP конекшенов между PHP процессами

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Вопрос о наличии пула конекшенов в PHP
KoteKotlyraov
Отправлено: 24 Октября, 2018 - 13:55:54
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Окт. 2018  


Помог: 0 раз(а)




Доброго времени суток.

Воспользовался контекстным поиском пару раз (который минут 5 перенаправляет меня на страницу с результатами...), но не смог найти для себя полезной информации касательно моего вопроса.

Мой вопрос можно упростить:
Есть N php скриптов на сервере. Каждый должен обращаться в одну и ту же 3rd party API (с разными запросами).
Может ли один скрипт создать соединение в эту API, которое затем будет использоваться при обработки последующих реквестов (запросы могут быть в разные файлы) ?
А если это не один конекшен а десятки ?
А кто будет менеджить эти соединения ?


Более подробная задача (Отобразить)


Я далёк от PHP, но изучив форумы и документации, я не смог найти чёткого ответа. Есть 3 режима работы Apache начиная с версии 2.4: pre_fork, worker, event. Два последних держат parent процесс, который управляет дочерними listen'арами, которым он передаёт запросы на обработку. По завершению они не очищают всю память, а позволяют держать открытые соединения и прочие ресурсы, которые могут быть использованы при обработке последующих запросов. Но как они менеджат эти рисурсы или как ими можно управлять - я не нашел ни слова.

Режим event создан специльно для Keep-Alive соединений, но у меня другая задача: 1 клиент делает около 1-2 запросов в час(!), мне нужен Keep-Alive не для клиентских соединений, а для самих дочерних процессов, которые занимаются обработкой php запросов.

В документации CURL написано что он умеет "придерживать" сокет открытым некоторое время, что бы его можно было переиспользовать. Так же можно передавать curl handler'ы в методы, что бы указывать каким хендлером нужно делать запрос. PHP умеет curl, curl_multy, и curl_easy (насколько я понял).

Но простой тест на саму CURL либу с двумя bash скриптами которые запускаются по очереди и скачивают файлы с одного домена, показывает (через netstat, к примеру) что сокеты используются разные, значит никакого "глобального системного пула TCP конекшнеов и сокетов для CURL'а нет). Я не смогу хранить этот handler нигде (shared memory, cache, и т.д.) поскольку это не простой объект, а ресурс получается, который должен быть в памяти и который может быть передан для его использования.

Так что же тогда с PHP ? Можно ли такое сделать ? Можно ли создавать десятки curl хендлеров (или сокетов) и переиспользовать их в тысячах скриптах ?

Вот такой вопрос про persistent connections, connection cache, connection pool, sharing connections, HTTP pool, socket pool и так далее, но на уровне Web Server'а...

Увы (Отобразить)



Сейчас инвестигейчу данный вопрос для решения с Nginx + php_fpm. Пока ничего не понятно

(Отредактировано автором: 24 Октября, 2018 - 14:01:39)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB