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

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

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

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

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

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

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

15 ответов

20 просмотров

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

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
Карта сайта