S
S
Sergey Pugovkin2016-05-13 22:28:59
linux
Sergey Pugovkin, 2016-05-13 22:28:59

How exactly does the pcntl_waitpid function work in PHP?

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

Answer the question

In order to leave comments, you need to log in

1 answer(s)
Павел Селиванов, 2016-05-14
@Driver86

> Does this function generally stop the execution of the script until the child completes its work, or what?
yes:
> Suspends execution of the current process until a child as specified by the pid argument has exited
but this can be overridden with 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.
> What it does for example:
> pcntl_waitpid($pid, $status, WNOHANG);
Immediately write to status the state of the completed or still running child.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question