HTTP/2

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Не то чтоб новость, но здесь еще не было.

Для тех, кто еще не в теме, понять что нового во 2й версии HTTP можно тут: http://http2.github.io/faq/

Поддержка в Nginx планируется к концу этого года.
http://www.serverwatch.com/server-news/nginx-gearing-up-for-http2.html

В этой связи встает вопрос с ограниченностью CGI-модели для обработки мультиплексированных запросов.
 

MiksIr

miksir@home:~$
Ну используй http/2 модель, что мешает ;)
Только вот, боюсь, что в том же nginx http/2 для бекенда появится не скоро... и где-нибудь в nginx plus
 
Последнее редактирование:

MiksIr

miksir@home:~$
Ключевое слово "для бекенда". Его (SPDY) для бекенда сейчас нет ваще (даже в плюс версии).
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
до конца года могут успеть сделать поддержку для backend, но сейчас просто нечего поддерживать.
здесь первые кандидаты на реализацию - джава и нода,
надеюсь, в HHVM сделают поддержку
 

MiksIr

miksir@home:~$
надеюсь, в HHVM сделают поддержку
Поддержку чего? HTTP/2? А в чем ты видишь смысл?

Скрипт то синхронный все-равно. SAPI с HTTP/2 не проблема, только профита никакого. Разве что экономия tcp соединений, но это такие крайние случаи, когда в это можно упереться, что можно забыть.

Лучше, что может быть, это какое-нить libevent-http2, которое будет эмулировать select/epoll на новые потоки в http/2 для упрощения написания своего мультиплексирующего сервера на PHP, так это можно и в рамках текущего PHP сделать.
 

fixxxer

К.О.
Партнер клуба
Не очень понимаю смысла в http/2 к скриптовому бэкенду. От балансировщика - да, смысл имеет.

Касаемо других серверов - для апача есть mod_spdy, до 4-й версии spdy (a.k.a. http/2) ему примерно так же недалеко, как и текущей реализации в nginx.

А вот с поддержкой http2 upstreams в nginx сложнее, там, как я понимаю, еще конь не валялся.
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
MiksIr, я именно об этом и говорю - в рамках текущего php делать асинхронность и мультиплексирование весьма проблематично,
в первую очередь из-за традиций очистки памяти после завершения
 

MiksIr

miksir@home:~$
Так ничего не мешает писать мультиплекс на пхп. Та же нода вроде точно так же работает, не? Движок запускает js скрипт, который уже с помощью вызовов библиотек отрабатывает входящие соединения.

Просто у ноды есть уже решения, библиотеки и т.п, а на PHP это особо никому не нужно. Вон таже асинхронная база вроде есть. А как объединить хендлеры базы с хендлерами сокетов - непонятно ;) Кстати, может кто знает?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
MiksIr, да. Не мой, конечно, часть phpdaemon. И да, он работает асинхоронно, в евент лупе либевента.
 

MiksIr

miksir@home:~$
Жуть :) Ну раз они этим путём пошли, значит с родными клиентами никак.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
mysql_poll работает с resouce, которые connection handler. зачем обычные сокеты?

есть большие сомнения, что на родных клиентах "невозможно". если бы так было - был бы багрепорт на сегфолт или утечку памяти
 

флоппик

promotor fidei
Команда форума
Партнер клуба

MiksIr

miksir@home:~$
А как иначе мультиплекс писать? По сути в мультиплексе должен быть один ожидающий цикл, в котором и активность входящих соединений и ожидание ответа базы.
 
Сверху