170 похожих чатов

Привет, ребята! Кодил уже год на PHP (интернет-магазины, веб-сервисы на Symfony

итд). А тут по выходным начал осваивать Go "для души".
Проходил пример с обработкой входящих данных из нескольких каналов в разных горутинах. Выглядит круто.

Возник вопрос. А как обычно в PHP, где нет аналогов горутин из коробки?
Так то в курсе про варианты реализации многопоточности и параллельности в PHP, но это, скорее, исключение, которое редко где используется.

Т.е. скрипты на PHP же служат и онлайн-чатиками, работающими в реал-тайме и как то разбирают эффективно очереди, и получают данные из нескольких мест одновременно.

Но я никогда не сталкивался с такими задачами и навскидку не пойму, а как же быть в таких случаях? Навскидку вижу вариант с запуском нескольких PHP-демонов одновременно (по одному на разбор прилетающих данных из каждого источника). Но это выглядит костылем и наверняка высоконагруженные проекты работаю по другому принципу.

Расскажите, пожалуйста, по "какому" такому принципу? Не обязательно текстом. Буду рад ссылке на видео/статью итд

15 ответов

7 просмотров

в пыхе используются очереди для распараллеливания задач

Sergio-K. Автор вопроса
Viktor ["🚁","🏍"]
в пыхе используются очереди для распараллеливания ...

A если в очередь (Rabbitmq тот же) прилетает 10 задач в секунду, а обрабатывается в одном потоке только 5 задач в секунду, выходит, что для повышения производительности нужно запускать отдельные инстансы PHP?

Sergio K.
A если в очередь (Rabbitmq тот же) прилетает 10 за...

что ты подразумеваешь под "отдельные инстансы PHP" ?

Sergio-K. Автор вопроса
Vitaly Larin
что ты подразумеваешь под "отдельные инстансы PHP"...

Несколько экземпляров (несвязанных друг с другом) запусков скрипта в PHP. Образно говоря, как если бы мы запускали по отдельному окну программы Word для каждой страницы текстового файла.

Sergio K.
A если в очередь (Rabbitmq тот же) прилетает 10 за...

да, дополнительные воркеры нужно запускать

Sergio K.
Несколько экземпляров (несвязанных друг с другом) ...

а для чего по твоему , настраивают nginx+php-fpm , что есть php-fpm ? какая разница между асинхронностью, параллельностью ... как обрабатываются два одинаковых запроса на сайте от двух разных юзеров в одно время ?

Sergio-K. Автор вопроса
Viktor ["🚁","🏍"]
да, дополнительные воркеры нужно запускать

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

Sergio-K. Автор вопроса
Vitaly Larin
а для чего по твоему , настраивают nginx+php-fpm ...

Да, с асинхронностью, параллельностью итд знаком - в НИИ на GRID-системах довелось поработать. Вопрос мой, скорее, в области конкретного варианта реализации на PHP задачи, решение которой описал в контексте Golang.

Нужно смотреть конкретное расширение для работы с очередями. В ларе есть Horizon, он по-моему умеет динамически добавлять-убавлять воркеры, но это неточно

посмотри видео где описывается работа roadrunner. поиском по ютубу проще найти


посмотри видео где описывается работа roadrunner. ...

роадраннер даёт неумирающий пхп, не изменяя других принципов

Sergio-K. Автор вопроса
Viktor ["🚁","🏍"]
Нужно смотреть конкретное расширение для работы с ...

Спасибо за инфу! Смысл понял. Выходит, что распараллелить обработку разбора очереди можно без проблем на PHP, другое дело, что каждый обработчик займет отдельный процесс и станет от этого более тяжеловесным, чем спец. инструменты для этой цели в Go (и аналогах) + потребуется поставить немного доп пакетов, а не ограничиться лишь возможностями языка из коробки.

Sergio K.
Спасибо за инфу! Смысл понял. Выходит, что распар...

Да много всяких библиотек есть. В swoole есть корутины, как в go.

корутина - какое-то дурацкое слово есть же исконно посконное - копрограмма

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
Кто создает тут ботов для телеграмм групп ?
Antskup
8
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
14
Вроде бы вопрос уже заезжанный, но тем не менее У меня есть функция menu() которая выводит набор возможных действий, а затем спрашивает у пользователя что он хотел бы сделать....
David Golovatin
2
Я хочу запустить свой проект в тг. Что-то между пирамидой и майнилкой. Еще подобного ничего не было. Уникальная идея. Нужен именно не бот, а приложение. С ввод, выводом тон...
Павел А.
6
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Карта сайта