Задать вопрос
Driver86
@Driver86
Немодератор toster.ru

Как конкретно работает в PHP функция pcntl_waitpid?

Есть демон на php, выполняющий в цикле разные задачи, в частности: иногда в определённое время порождает процессы и убивает их, если они слишком долго выполняют поставленную задачу. Но не учёл в демоне такую вещь, как зомби-процесс. Т.е. в идеале демон должен получать от детей сигнал при завершении работы. Надо использовать pcntl_waitpid, но из короткой документации не могу понять, эта функция вообще что ли останавливает выполнение скрипта, пока ребёнок не завершит свою работу, или как ?

Что например делает:
pcntl_waitpid($pid, $status, WNOHANG);
Проверяет статус?
Или ждёт, пока процесс завершиться и вернёт статус, останавливая работу родителя на значительное время?
  • Вопрос задан
  • 609 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
selivanov_pavel
@selivanov_pavel
Linux admin
> эта функция вообще что ли останавливает выполнение скрипта, пока ребёнок не завершит свою работу, или как ?
да:
> Suspends execution of the current process until a child as specified by the pid argument has exited
но это можно переопределить параметром options:
> possible values for options
> WNOHANG return immediately if no child has exited.
> WUNTRACED return for children which are stopped, and whose status has not been reported.

> Что например делает:
> pcntl_waitpid($pid, $status, WNOHANG);

Сразу запишет в status состояние завершённого или всё ещё работающего child.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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