Задать вопрос
@hesy

Многопоточность в php?

Возможно ли реализовать на PHP скрипт (cli) который будет в отдельном потоке обрабатывать события сокета, а в основном потоке в бесконечном цикле слушать пользовательский ввод (stdin) и его обрабатывать?

Для реализации многопоточности думаю использовать библиотеку parallel.

Приведу небольшой пример, как я это вижу:

<?php 

...

$socket = Thread::run(function () {
  // отдельный поток для обработки событий сокета
});

...

while (true) {
  $command = fgets(STDIN); // основной поток, обработка пользовательского ввода

  switch($command) { 
    ...
  }
}
  • Вопрос задан
  • 613 просмотров
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 4
Alex_Wells
@Alex_Wells
PHP/Kotlin
Лучше это: https://github.com/amphp/parallel

Оно стабильней и лучше дебажится.

Только что то, что другое - абсолютный кошмар, и если можно это не использовать - не используй.
Ответ написан
Комментировать
index0h
@index0h
PHP, Golang. https://github.com/index0h
Мультипоточность в php - штука прикольная, поковырять. Но жить с ней часто довольно болезненно.
Лучше смотрите в сторону очередей и supervisor например.
Ответ написан
Комментировать
@good_beginer
Библиотека для PHP - Workerman. Создаёшь worker и даёш ему какое то задание. Она заточена под ТСП соединение тоесть из этого можно сделать всё что угодно. Как вариант... а так если речь идёт о многопоточности лучще смотреть в сторону других решений которые умеют работать с высокой нагрузкой. PHP для этого не подходит.
Ответ написан
Stalker_RED
@Stalker_RED
Куча статей по теме habr php демон
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽