Управление процессами в PHP

Управление процессами в PHP

Оглавление:
О PHP-процессах
Управление процессами в PHP
Пример управления процессами

О PHP-процессах:

Поддержка функций управления процессом в РНР реализует создание процесса в стиле Unix, выполнение программы, обработку сигналов и окончание процесса. Управление процессом не должно включаться в окружении web-сервера, и могут быть неожиданные результаты, если функции управления процессом будут выполняться внутри среды web-сервера.

Эта документация призвана разъяснить общие принципы использования каждой из функций управления процессом. Детальную информацию об управлении процессом в Unix мы рекомендуем вам найти в вашей системной документации, включая fork(2), waitpid(2) и signal(2), или в исчерпывающем справочнике, таком как Advanced Programming in the UNIX Environment, автор W. Richard Stevens (Addison-Wesley).

PCNTL теперь использует импульсы сигнала времени как механизм повторного вызова дескриптора сигнала, который намного быстрее чем предыдущий механизм. Это изменение следует за той же самой семантикой, как использование «пользовательские импульсы сигнала времени». Вы используете конструкцию declare(), для того чтобы определить местоположения в вашей программе, где повторным вызовам позволяют произойти. Это позволяет Вам свертывать верхние асинхронные события из обработки.

Управление процессами в PHP:

Управление процессами по умолчанию отсутствует в PHP. Поэтому Вам необходимо иметь скомпилированную CGI или CLI версию PHP с опцией —enable-pcntl.

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

<?php
declare(ticks=1);

$pid = pcntl_fork();
if ($pid == -1) {
     die("could not fork");
} else if ($pid) {
     exit(); // we are the parent
} else {
     // we are the child
}

// detatch from the controlling terminal
if (!posix_setsid()) {
    die("could not detach from terminal");
}

// loop forever performing tasks
while (1) {

    // do something interesting here

}

function sig_handler($signo)
{

     switch ($signo) {
         case SIGTERM:
             // handle shutdown tasks
             exit;
             break;
         case SIGHUP:
             // handle restart tasks
             break;
         default:
             // handle all other signals
     }

}

// setup signal handlers
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");

?>

Источник: http://www.php.su/

15
Поделиться
Mentor

Уже более четырех лет интернет - моё хобби. Больше всего мне удалось освоить веб-дизайн. В настоящее время активно занят продвижением сайтов.

Оставить комментарий

Войти с помощью: 
Яндекс.Метрика