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

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

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

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

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

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

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

15 ответов

55 просмотров

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

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.

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта