MiksIr
miksir@home:~$
http://phpclub.ru/talk/threads/Тонкий-принцип-работы-сокетов-php.79298/а как ещё многозадачность делать, если без форков?
Как раз для этих целей (обработка множества соединений в одном процессе) libevent и сделано.
http://phpclub.ru/talk/threads/Тонкий-принцип-работы-сокетов-php.79298/а как ещё многозадачность делать, если без форков?
вы говорите, что с libevent не нужны форки и можно каждый запрос "вешать" на минуту?http://phpclub.ru/talk/threads/Тонкий-принцип-работы-сокетов-php.79298/
Как раз для этих целей (обработка множества соединений в одном процессе) libevent и сделано.
по сути это выглядит, как 2 демона запустить на разные портыЕдинственный полезный вариант их объединения - это prefork схемы, когда дети форкаются заранее, а мастер-процесс распределяет соединения по детям.
глава IT в Alpari в 2014 году юзает declare(ticks=100);Этот чувак делал:
http://devconf.ru/news/detail/30
Там и другие способы есть. Я наиболее интересный озвучил.глава IT в Alpari в 2014 году юзает declare(ticks=100);
ясно. понятно.
кстати, игровой серверИли libevent или форки, да. Технически ничто не мешает их объединить, но никакого профита тут не вижу.
Единственный полезный вариант их объединения - это prefork схемы, когда дети форкаются заранее, а мастер-процесс распределяет соединения по детям.
Для тех игр, бекенды которых на PHP, проще все посчитать в обычных запросах. Обычная логика там.кстати, игровой сервер
не, ксы всякиеДля тех игр, бекенды которых на PHP, проще все посчитать в обычных запросах. Обычная логика там.
кстати, чё-то у меня эта обработка идёт последовательно, а не параллельноhttp://phpclub.ru/talk/threads/Тонкий-принцип-работы-сокетов-php.79298/
Как раз для этих целей (обработка множества соединений в одном процессе) libevent и сделано.
так суть моего вопроса в чём, - а где же его параллельность то?Ни к какой многопоточности libevent отношения не имеет.
Его смысл исключительно для i/o bound приложений, то есть для тех случаев, когда с классическим "блокирующим" подходом 90% времени приложение будет находиться в ожидании поступления информации по сети - смысл в том, чтобы не ждать, а обрабатывать массу сетевых соединений параллельно и запускать соответствующий обработчик, как только откуда-то данные прилетели, и обработчики при этом должны быть легкие, иначе весь смысл теряется.
С cpu bound (вычисления) - только форки или ядерные треды.
строго говоря, мне просто не нравится концепция while(1){}Во времена одного ядра тоже говорили про параллельность, но ядро то одно.
Если у вас блокирующие долгие операции, то вам никакой libevent нужен. Делайте обычный accept+fork.
C диском тоже можно работать асинхронно, но это уже не уровень PHP.
в данном случае libevent это "современный комп""Мне не нравится концепция современных компьютеров!" - сказал он.
C этой точки зрения нет никакой разницы между libevent и socket_acceptстрого говоря, мне просто не нравится концепция while(1){}