1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
      <output id="hzk7v"></output>
    2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
    3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>

      PHP信号处理机制的操作代码讲解

       更新时间2019年04月19日 08:36:42   投稿laozhang   我要评论

      在本篇文章里小编给大家分享了关于PHP信号处理机制的操作的相关知识点内容需要的朋友们学习下

      我们首先来看下实例代码

      function sig_handler($sig)
      
      {
      
        print("handled sig: $sig\n");
      
      }
      
       
      
       
      
       
      
      pcntl_signal(SIGIO,  "sig_handler");
      
      posix_kill(posix_getpid(),SIGIO);
      
       
      
      while(true)
      
      {
      
        posix_kill(posix_getpid(),SIGIO);
      
       
      
        pcntl_signal_dispatch();
      
       
      
        sleep(1);
      
      }

      最好自己手动循环处理信号队列,而不是使用php提供的的declare(ticks=1)tick_handler()这种信号处理机制因为tick机制的性能问题,每执行一条语句都回调tick_handler查?#35789;?#21542;有信号,而很大部分时间是没有信号的

      posix_signal设置信号的回调处理,

      posix_kill仅仅是把信号放入进程的信号待处理队列中,所有并不会触发信号回调,由pcntl_signal_dispatch处理信号队列中的信号

      posix_getpwnam("nginx")获取用户名的uid,gid等信息

      pcntl_signal(SIGPIPE, SIG_IGN, false)忽略内核发来的SIGPIPE信号,当连接已closed,进程继续发数据到无效socket系统会收到含RST 控制位TCP包,系统会发出一个SIGPIPE信号给进程告诉进程这个连接已经断开了不要再写了该信号的默认处理是终止进程进程可以捕获它并忽略该信号以免不情愿的被终止

      socket上下文选项

      backlog:用于限制流监听队列中未完成连接的连接数量

      so_reuseport:重用端口由内核调度连接到多个监听同一个端口的进程由于是通过hash方式来标志连接对应的进程,所以监听进程数是不能改变的

      定时器信号处理

      pcntl_signal(SIGALRM,"sig_handler");
      
      pcntl_alarm(2);
      
      function sig_handler($sig)
      
      {
      
        echo "one second after";
      
      }
      
      while (1)
      
      {
      
        pcntl_signal_dispatch();
      
        sleep(1);
      
      }

      相关文章

      最新评论

      3dԻв

        1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
          <output id="hzk7v"></output>
        2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
        3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>

            1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
              <output id="hzk7v"></output>
            2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
            3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>