Функции Управления Процессом
LXXXI. Функции управления процессом
Поддержка функций управления процессом в РНР реализует создание процесса в стиле Unix, выполнение программы, обработку сигналов и окончание процесса. Управление процессом не должно включаться в окружении web-сервера, и могут быть неожиданные результаты, если функции управления процессом будут выполняться внутри среды web-сервера.
Эта документация призвана разъяснить общие принципы использования каждой из функций управления процессом. Детальную информацию об управлении процессом в Unix мы рекомендуем вам найти в вашей системной документации, включая fork(2), waitpid(2) и signal(2), или в исчерпывающем справочнике, таком как Advanced Programming in the UNIX Environment, автор W. Richard Stevens (Addison-Wesley).
Поддержка управления процессом в PHP по умолчанию не включена. Вам необходимо использовать опцию конфигурации --enable-pcntl при компилировании PHP, чтобы включить эту поддержку.
Примечание: в настоящее время этот модуль не работает на не-Unix платформах (Windows).
Следующий список сигналов поддерживается функциями управления процессом. См. man-страницу signal(7) вашей системной документации о поведении по умолчанию этих сигналов.
Таблица 1. Поддерживаемые сигналы
SIGFPE | SIGCONT | SIGKILL |
SIGSTOP | SIGUSR1 | SIGTSTP |
SIGHUP | SIGUSR2 | SIGTTIN |
SIGINT | SIGSEGV | SIGTTOU |
SIGQUIT | SIGPIPE | SIGURG |
SIGILL | SIGALRM | SIGXCPU |
SIGTRAP | SIGTERM | SIGXFSZ |
SIGABRT | SIGSTKFLT | SIGVTALRM |
SIGIOT | SIGCHLD | SIGPROF |
SIGBUS | SIGCLD | SIGWINCH |
SIGPOLL | SIGIO | SIGPWR |
SIGSYS |
Пример управления процессом
Этот пример разветвляет процесс демона/daemon с обработчиком сигнала.
- Содержание
- pcntl_exec - выполняет специфицированную программу в пространстве текущего процесса
- pcntl_fork - разветвляет текущий процесс
- pcntl_signal - инсталирует обработчик сигнала
- pcntl_waitpid - ожидает или возвращает статус разветвлённого потомка
- pcntl_wexitstatus - возвращает return-код завершённого потомка
- pcntl_wifexited - возвращает TRUE, если статус-код представляет успешный выход
- pcntl_wifsignaled - возвращает TRUE, если статус-код представляет окончание по сигналу
- pcntl_wifstopped - возвращает TRUE, если дочерний процесс в данный момент остановлен
- pcntl_wstopsig - возвращает сигнал, который заставляет потомка остановиться
- pcntl_wtermsig - возвращает сигнал, который заставляет потомка закончить работу