@hesy

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

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

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

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

<?php 

...

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

...

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

  switch($command) { 
    ...
  }
}
  • Вопрос задан
  • 299 просмотров
Решения вопроса 4
Alex_Wells
@Alex_Wells
PHP/TS/Kotlin developer
Лучше это: https://github.com/amphp/parallel

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

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

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

Войти через центр авторизации
Похожие вопросы