Esta web utiliza cookies, puedes ver nuestra política de cookies, aquí Si continuas navegando estás aceptándola

Gestor de señales en php


Compilamos php con la use flag pcntl:

vi /etc/portage/package.use/php
dev-lang/php apache2 berkdb bzip2 cli crypt ctype curl curlwrappers exif fileinfo filter ftp gd gdbm hash iconv imap intl json mysql mysqli nls odbc pdo phar posix readline session simplexml soap sockets sqlite3 ssl sysvipc threads tokenizer unicode xml xmlreader xmlrpc xmlwriter zip zlib threads fpm cgi truetype bcmath ldap pcntl

Programamos nuestro pequeño artilugio:

vi signal.php

<?php
declare(ticks = 1);

echo "Installing signal handler...\n";
pcntl_signal(SIGUSR1,  function($signo) {
     echo "Signal handler called\n";
});

echo "Done\n";
echo "PID: " . posix_getpid() . "\n";
echo "Waiting signal\n";

while(true){
    sleep(1);
}

?>

Probemos nuestro pedacito de código:

php signal.php
Installing signal handler...
Done
PID: 29763
Waiting signal

Enviamos la señal SIGUSR1:

kill -SIGUSR1 PID

El código funciona como es esperado captando la señal:

Installing signal handler...
Done
PID: 29763
Waiting signal
Signal handler called

Autor: Kr0m -- 07/07/2017 22:07:45