pcntl_signal

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

pcntl_signal锟斤拷装一锟斤拷锟脚号达拷锟斤拷锟斤拷

说锟斤拷

pcntl_signal ( int $signo , callback $handler [, bool $restart_syscalls = true ] ) : bool

锟斤拷锟斤拷pcntl_signal()signo指锟斤拷锟斤拷锟脚号帮拷装一锟斤拷锟斤拷 锟斤拷锟脚号达拷锟斤拷锟斤拷锟斤拷

锟斤拷锟斤拷

signo

锟脚号憋拷拧锟�

handler

锟脚号达拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟矫伙拷锟斤拷锟斤拷锟侥猴拷锟斤拷锟津方凤拷锟斤拷锟斤拷锟街o拷也锟斤拷锟斤拷锟斤拷系统锟斤拷锟斤拷 SIG_IGN锟斤拷锟斤拷注锟斤拷锟斤拷锟斤拷锟脚号达拷锟斤拷锟斤拷颍┗锟�SIG_DFL锟斤拷默锟斤拷锟脚号达拷锟斤拷锟斤拷锟�.

Note:

注锟解当锟斤拷使锟斤拷一锟斤拷锟斤拷锟襟方凤拷锟斤拷时锟津,该讹拷锟斤拷锟斤拷锟斤拷眉锟斤拷锟斤拷锟斤拷锟斤拷锟绞癸拷锟斤拷锟斤拷锟斤拷锟侥憋拷为锟斤拷锟斤拷锟斤拷锟斤拷锟脚憋拷锟斤拷锟斤拷之前锟角持久达拷锟节的★拷

restart_syscalls

指锟斤拷锟斤拷锟脚号碉拷锟斤拷时系统锟斤拷锟斤拷锟斤拷锟斤拷锟角凤拷锟斤拷谩锟斤拷锟斤拷锟阶拷锟斤拷锟斤拷锟斤拷锟斤拷希锟斤拷瞬锟斤拷锟斤拷锟轿低筹拷锟斤拷帽锟斤拷藕糯锟斤拷时锟斤拷系统锟斤拷锟斤拷锟角凤拷锟� 锟斤拷始锟斤拷锟斤拷锟铰匡拷始锟斤拷锟斤拷锟斤拷锟斤拷http://bugs.php.net/bug.php?id=52121锟斤拷锟剿诧拷锟斤拷锟斤拷锟斤拷bug锟斤拷效锟斤拷锟斤拷

锟斤拷锟斤拷值

锟缴癸拷时锟斤拷锟斤拷 TRUE锟斤拷 锟斤拷锟斤拷锟斤拷失锟斤拷时锟斤拷锟斤拷 FALSE锟斤拷

锟斤拷锟斤拷锟斤拷志

锟芥本 说锟斤拷
4.3.0 锟斤拷锟接诧拷锟斤拷restart_syscalls锟斤拷
4.3.0 锟斤拷锟襟方凤拷锟斤拷锟斤拷锟斤拷为锟截碉拷锟斤拷使锟矫★拷
4.3.0 PCNTL锟斤拷锟斤拷使锟斤拷锟斤拷ticks锟斤拷为锟脚号达拷锟斤拷幕氐锟斤拷锟斤拷疲锟絫icks锟斤拷锟劫讹拷锟斤拷远远锟斤拷锟斤拷锟斤拷之前锟侥达拷锟斤拷锟斤拷啤锟� 锟斤拷锟斤拷浠拷锟�"锟矫伙拷ticks"锟斤拷循锟斤拷锟斤拷同锟斤拷锟斤拷锟藉。锟斤拷锟斤拷锟斤拷使锟斤拷declare() 锟斤拷锟斤拷诔锟斤拷锟斤拷锟街革拷锟斤拷锟斤拷锟斤拷锟斤拷氐锟斤拷锟轿伙拷谩锟斤拷锟绞癸拷锟斤拷锟斤拷嵌锟斤拷觳斤拷录锟斤拷锟斤拷锟侥匡拷锟斤拷锟斤拷小锟斤拷锟斤拷锟节憋拷锟斤拷PHP时 锟斤拷锟斤拷pcntl锟斤拷始锟秸承碉拷锟斤拷锟街匡拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟侥脚憋拷锟斤拷锟角凤拷锟斤拷锟斤拷使锟斤拷锟斤拷pcntl锟斤拷 PHP 4.3.0使锟斤拷ticks锟斤拷为锟脚号达拷锟斤拷氐锟斤拷锟斤拷疲锟斤拷锟斤拷锟斤拷前锟侥伙拷锟狡匡拷锟剿很多。锟斤拷锟斤拷浠拷锟� "锟矫伙拷ticks" 锟斤拷循锟斤拷锟斤拷同锟斤拷锟斤拷锟藉。锟斤拷锟斤拷锟斤拷使锟斤拷declare() 锟斤拷锟斤拷诔锟斤拷锟斤拷锟街革拷锟斤拷锟斤拷锟斤拷锟斤拷氐锟斤拷锟轿伙拷谩锟�

锟斤拷锟斤拷

Example #1 pcntl_signal()示锟斤拷

<?php
//使锟斤拷ticks锟斤拷要PHP 4.3.0锟斤拷锟较版本
declare(ticks 1);

//锟脚号达拷锟斤拷锟斤拷
function sig_handler($signo)
{

     switch (
$signo) {
         case 
SIGTERM:
             
// 锟斤拷锟斤拷SIGTERM锟脚猴拷
             
exit;
             break;
         case 
SIGHUP:
             
//锟斤拷锟斤拷SIGHUP锟脚猴拷
             
break;
         case 
SIGUSR1:
             echo 
"Caught SIGUSR1...\n";
             break;
         default:
             
// 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟脚猴拷
     
}

}

echo 
"Installing signal handler...\n";

//锟斤拷装锟脚号达拷锟斤拷锟斤拷
pcntl_signal(SIGTERM"sig_handler");
pcntl_signal(SIGHUP,  "sig_handler");
pcntl_signal(SIGUSR1"sig_handler");

// 锟斤拷锟斤拷锟斤拷PHP 4.3.0锟斤拷锟较版本锟斤拷锟斤拷使锟矫讹拷锟襟方凤拷
// pcntl_signal(SIGUSR1, array($obj, "do_something");

echo "Generating signal SIGTERM to self...\n";

//锟斤拷前锟斤拷锟教凤拷锟斤拷SIGUSR1锟脚猴拷
posix_kill(posix_getpid(), SIGUSR1);

echo 
"Done\n"

?>

锟轿硷拷

  • pcntl_fork() - 锟节碉拷前锟斤拷锟教碉拷前位锟矫诧拷锟斤拷锟斤拷支锟斤拷锟接斤拷锟教o拷锟斤拷锟斤拷注锟斤拷fork锟角达拷锟斤拷锟斤拷一锟斤拷锟接斤拷锟教o拷锟斤拷锟斤拷锟教猴拷锟接斤拷锟斤拷 锟斤拷锟斤拷fork锟斤拷位锟矫匡拷始锟斤拷锟铰硷拷锟斤拷执锟叫o拷锟斤拷同锟斤拷锟角革拷锟斤拷锟斤拷执锟叫癸拷锟斤拷锟叫o拷锟矫碉拷锟斤拷fork锟斤拷锟斤拷值为锟接斤拷锟斤拷 锟脚o拷锟斤拷锟接斤拷锟教得碉拷锟斤拷锟斤拷0锟斤拷
  • pcntl_waitpid() - 锟饺达拷锟津返伙拷fork锟斤拷锟接斤拷锟斤拷状态