Компьютерная скорая помощь

 

 

 

 

 
RSS
 
 
На главную | Контакты | Карта сайта | Регистрация доменов | Cотовая связь | Учебник PHP | Интернет |  

Учебник РНР
Назад Вперёд

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. Поддерживаемые сигналы
SIGFPESIGCONTSIGKILL
SIGSTOPSIGUSR1SIGTSTP
SIGHUPSIGUSR2SIGTTIN
SIGINTSIGSEGVSIGTTOU
SIGQUITSIGPIPESIGURG
SIGILLSIGALRMSIGXCPU
SIGTRAPSIGTERMSIGXFSZ
SIGABRTSIGSTKFLTSIGVTALRM
SIGIOTSIGCHLDSIGPROF
SIGBUSSIGCLDSIGWINCH
SIGPOLLSIGIOSIGPWR
SIGSYS  

Пример управления процессом

Этот пример разветвляет процесс демона/daemon с обработчиком сигнала.

Пример 1. Управление процессом
<?php
$pid = pcntl_fork();
if ($pid == -1) {
     die("could not fork"); 
} else if ($pid) {
     exit(); // мы родитель
} else {
     // мы потомок
}
// отсоединиться от терминала управления
if (!posix_setsid()) {
    die("could not detach from terminal");
}
// настроить обработчики сигнала
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");
// проходить по циклу, выполняя задачи
while(1) {
    // здесь делать что-нибудь интересное
}
function sig_handler($signo) {
     switch($signo) {
         case SIGTERM:
             // обработать задачи отключения
             exit;
             break;
         case SIGHUP:
             // обработать задачи рестарта
             break;
         default:
             // обработать все другие сигналы
     }
}
?>
Содержание
pcntl_exec - выполняет специфицированную программу в пространстве текущего процесса
pcntl_fork - разветвляет текущий процесс
pcntl_signal - инсталирует обработчик сигнала
pcntl_waitpid - ожидает или возвращает статус разветвлённого потомка
pcntl_wexitstatus - возвращает return-код завершённого потомка
pcntl_wifexited - возвращает TRUE, если статус-код представляет успешный выход
pcntl_wifsignaled - возвращает TRUE, если статус-код представляет окончание по сигналу
pcntl_wifstopped - возвращает TRUE, если дочерний процесс в данный момент остановлен
pcntl_wstopsig - возвращает сигнал, который заставляет потомка остановиться
pcntl_wtermsig - возвращает сигнал, который заставляет потомка закончить работу

Назад Оглавление Вперёд
pg_update Вверхpcntl_exec


На главную | Карта сайта | Windows 7 | Windows Registry | Stop-экраны | Update for Windows | Файл настроек .htaccess | Всё для мобильного телефона |
Рейтинг@Mail.ru
 

po gonn © 2004 "JULI'S BEEHIVE"