дорогой, тебе дать ссылку на правила клуба? ты кто из?Я дал ссылки. Дурак бы давно прочитал. Идиот в принципе читать не будет. Ему важнее задавать вопросы, чем получать ответы.
В связи с этим вопрос: сэр, вы дурак или идиот?
дорогой, тебе дать ссылку на правила клуба? ты кто из?Я дал ссылки. Дурак бы давно прочитал. Идиот в принципе читать не будет. Ему важнее задавать вопросы, чем получать ответы.
В связи с этим вопрос: сэр, вы дурак или идиот?
центрефуга поднимает вебсокеты, клиенты взаимодействуют с ним, подписываются на каналы, шлют ему сообщения. и на бэкенде из php ты через апи забираешь или посылаешь данные на центрефугу. в итоге тебе не надо держать толстый процесс на php с фреймворкой и прочей обвязкой. не надо париться о реализации вебсокета, не надо париться об утечках и блокировках.но зачем тогда вообще нужна эта центрифуга? если можно будет напрямую общаться с php?
preload и roadrunner решают проблему бутстрапинга, но не решают кучу других связанных с умиранием процессов. в полноценном демоне, тебе не надо постоянно лазить в базу и париться о кэше, так как данные шарятся в памяти и всякие идентити мэп у тебя работают не в рамках одного запроса, а в рамках всех, от этого куча плюсов и минусов.вот вы гоните
1. у swoole есть блокирующий и неблокирующий режимы
2. roadrunner - пу сути, то же самое, что swoole в блокирующем, и таки дает снижение latency ответа на порядок с 50 до 5 мс, за счет проблем с утечками памяти, естественно, и это позволяет написать несложный websocket-сервер с достаточной скоростью
3. preload в 7.4 решает ту же самую проблему чуть менее эффективно, но решает ... с новым годом, короче, могли бы иногда и новости читать, а не только хейтить ... хотя, golang мне нравится, но тут он ничего не даст
4. swoole в проде встречал, проблемы там две: не всегда закрывает соединение с клиентом и нет leaking bucket - тупо рубит новые соединения когда больше лимита, от nginx не уйдем
5. зачем mysql с PDO? с redis отлично будет бегать в блокирующем режиме, ничуть не хуже чем на ноде, без тонны зависимостей, даже без фреймвоков несложно сделать, легкий деплой и все остальные преимущества php
6. помню, @флоппик написал простенький сборщик логов с записью в mysql через PDO когда react не умел, и ничего оно не тормозило, работает уже не один год, наверное, откуда вы взяли что там 100 запросов в секунду?
Он умеет в асинхронность, но к сожалению, во первых с кучей "но" (начиная от того, что поддержку нужно явно компилять) а в главных - его нужно поллить для ответа, что довольно бессмысленно в evloop реализациях.Помимо редиса и его асинхронных клиентов, вечно забытый mysqli умеет в асинхронность.
roadrunner - это appserver, процессы не умирают просто так, но он умеет только http,preload и roadrunner решают проблему бутстрапинга, но не решают кучу других связанных с умиранием процессов. в полноценном демоне, тебе не надо постоянно лазить в базу и париться о кэше, так как данные шарятся в памяти и всякие идентити мэп у тебя работают не в рамках одного запроса, а в рамках всех, от этого куча плюсов и минусов.
центрифуга или pushpin для web sockets - аналог nginx или apache в http просто по архитектуре,на бэкенде из php ты через апи забираешь или посылаешь данные на центрефугу. в итоге тебе не надо держать толстый процесс на php с фреймворкой и прочей обвязкой. не надо париться о реализации вебсокета, не надо париться об утечках и блокировках.
чукча не читатель, чучка писательДа можно "преодолевать", рождая тысячи воркеров на пхп, тратя ресурсы машины на спящие процессы и их переключение, используя пересист коннекты, потом не забыв подсунуть еще proxysql что бы эти висящие коннекты не убили базу... есть такие проекты... а можно написать сразу на голанге, который озеленит тебя тредами.
Это не так. Единственное что дает golang - это лучшее решение для ipc.Да? А что именно я не так сказал? Что голанг освободит процессор от переключения между процессами, сидящими в iowait базы данных? Что из-за большого числа таких процессов будет увеличенное число idle коннектов в базу, тоже выжирающее ресурсы? Это все еще "golang ничего не даст?"
Ну да, "проблему блокирования на iowait можно решить, если запихнуть все в память и не ходить в базу", гениально, чоЛюбой условный каталог, например, отлично живет в памяти, и все, что у базы надо спрашивать - это timestamp записи, iowait не будет узким местом даже с блокирующим запросом.
Он просто слишком много здесь сидит, как и я.дорогой, тебе дать ссылку на правила клуба? ты кто из?
там такая отсинхронность, что лучше бы её не было.Помимо редиса и его асинхронных клиентов, вечно забытый mysqli умеет в асинхронность.
...и тут мы имеем классическую сложную проблему программирования (инвалидация кэша).Любой условный каталог, например, отлично живет в памяти
Справедливости ради, сам mysql client-server protocol последовательный, т.е. гарантирует очередь исполнения запросов в пределах соединения. Т.е. для тебя там все равно будет очередь из твоих запросов. _Результаты_ запроса можно тянуть с сервера асинхронно, да, пока исполняется другой.там такая отсинхронность, что лучше бы её не было.
Запрос в рамках одного соединения можно только один. то есть отправивив запрос в БД, ты можешь посидеть покурить или что-то поделать ещё, но другой запрос, чтобы он выполнялся параллельно, ты не отправишь.
Да, для терминирования ssl и балансировки.никто ж не открывает ноду или golang в мир напрямую, всегда стоит http-сервер,
Это решается пулом соединений.Справедливости ради, сам mysql client-server protocol последовательный, т.е. гарантирует очередь исполнения запросов в пределах соединения. Т.е. для тебя там все равно будет очередь из твоих запросов. _Результаты_ запроса можно тянуть с сервера асинхронно, да, пока исполняется другой.
Мне кажется, практическое ежедневное программирование это в принципе про "насколько далеко я могу зайти с самым простым вариантом решения"...и тут мы имеем классическую сложную проблему программирования (инвалидация кэша).
Я вот недавно в похожей ситуации выкинул кэш в памяти и сделал денормализацию в Redis. Медленнее, зато без багодрома.
да, но это никак не связано с "одним запросом при асинхронности" в случае mysqli конкретноЭто решается пулом соединений.
Конечно. Я про то, что масштабируем мы все же приложение, заменяя пачку процессов в iowait на один процесс в epoll. С пулом с точки зрения mysql ничего от такого перехода - от пачки процессов к одному с пулом соединений - не меняется, но вроде бы и не эту задачу же решали.да, но это никак не связано с "одним запросом при асинхронности" в случае mysqli конкретно
Ну и радости тогда с этой асинхронности? Мне всегда казалось что основная нагрузка - это выполнене запроса, а не получаение результата._Результаты_ запроса можно тянуть с сервера асинхронно,