Новые книги

Инновации являются важнейшим фактором роста. Сегодня, более чем когда-либо, компании должны внедрять инновации, чтобы выжить. Но успешные инновации – это очень непростая задача. Авторы – партнеры всемирно известной консалтинговой компании Simon-Kucher & Partners Strategy & Marketing Consultants знают о чем говорят. Георг Таке – ее генеральный директор, а Мадхаван Рамануджам – партнер в Сан-Франциско.

Simon-Kucher & Partners – глобальная консалтинговая компания, насчитывающая 900 профессионалов в 33 офисах по всему миру. Ее специализация – стратегии, маркетинг, ценообразование и продажи. Основанная в 1985 году, компания обладает 30-летним опытом и считается ведущим консультантом по ценообразованию в мире.

Если вы генеральный директор, или относитесь к исполнительному руководству, или являетесь частью команды, ответственной за инновации и разработку новых продуктов, эта книга для вас. С помощью специальных методик вы сможете сделать монетизацию инноваций частью ДНК вашей компании. Примеры показывают, как одни из лучших инновационных компаний мира, таких, как LinkedIn, UBER, Porsche, Optimizely, Dr?ger, Swarovski и крупные фармацевтические компании, используют принципы, описанные в этой книге.

«Монетизация инноваций» представляет практический подход, который может быть адаптирован для любой организации, в любой отрасли.

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

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

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