Задать вопрос
ilyaplot
@ilyaplot
PHP программист

Каким же способом реализовывать форки в PHP?

Вот хочу написать демона, работающего в несколько потоков. fork нестабилен, exec как то с «детства» навеивает на мысль об огромной дыре в безопасности. Может есть нормальные способы?

Хорош ли для управления потоками gearman?
  • Вопрос задан
  • 3816 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
s3ek
@s3ek
Fork это который pcntl_fork? Реализовывал как-то именно с помощью его многопоточность, проблем замечено не было.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@cat_crash
Задавался этой же целью. Рекомендую к прочтению: habrahabr.ru/blogs/php/40432/
Ответ написан
AotD
@AotD
PHP, Redis, Postgresql
fork из pcntl_fork так же нестабилен как и обычный Сишный форк. Ни больше ни меньше.
В дочерних процессах контролируем падение по любой ошибке, в том числе ошибке интерпретатора, корректно завершаем процесс с кодом возврата.

Код возврата анализируем в родительском процессе, чтобы определить сдох хомяк естественной смертью или его порвало от капли никотина.

Можно использовать ум предшественников и воспользоваться готовыми решениями: phpdaemon.net/
При должной сноровке и отсутствии боязни пересборки php эта штука не только будет префоркать нужное количество воркеров, но и делать горячую замену кода прямо во время выполнения.

Или nanoserv.si.kz/ — чуть проще, понятней для начала, но для 70% задач и его хватит с головой
Ответ написан
Комментировать
@sandrain
Хорош ли для управления потоками gearman?


Проблем не наблюдалось, всем довольны до сих пор.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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