Новые книги

Опираясь на исследования в области психологии, авторы показывают, что ключ к успеху в бизнесе – высокоэффективная корпоративная культура. Авторы доказывают, что вдохновляющая культура не возникает из ниоткуда: она опирается на научные методы. Из книги вы узнаете, как выстроить в компании культуру с нуля, как оценить нынешнюю культуру и какие изменения внести, если она испытывает трудности.

Книга предназначена для CEO, рекрутеров, бизнес-тренеров и психологов.

На русском языке публикуется впервые.
В любой отрасли можно обнаружить компании, которые сталкиваются с теми же трудностями, что и конкуренты, но – в отличие от них – неизменно достигают выдающихся результатов. Так что же они делают иначе, чем остальные? И можем ли мы чему-то у них научиться?

В поисках ответов на эти вопросы Майкл Рейнор и Мумтаз Ахмед, топ-менеджеры крупнейшей международной консалтинговой компании Deloitte, проанализировали данные по 25 000 компаний за 45 лет. В результате уникального по своему масштабу исследования им удалось сформулировать самые важные на их взгляд правила, которыми следует руководствоваться при планировании деятельности и стратегических маневров в современных рыночных условиях.

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

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

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. Поддерживаемые сигналы
SIGFPESIGCONT SIGKILL
SIGSTOPSIGUSR1SIGTSTP
SIGHUPSIGUSR2SIGTTIN
SIGINT SIGSEGVSIGTTOU
SIGQUITSIGPIPE SIGURG
SIGILLSIGALRMSIGXCPU
SIGTRAPSIGTERMSIGXFSZ
SIGABRT SIGSTKFLTSIGVTALRM
SIGIOTSIGCHLD SIGPROF
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