php异步信号处理

php7.1引入了PHP异步信号处理函数pcntl_async_signals() 来处理阻塞问题。在php7之前信号处理方式有2种,第一种是基于ticks来每执行一行代码来触发执行信号监听,第二种是直接while(true){  //监听信号 }

第一种方式如果某行的代码阻塞时间较长会影响信号监听,第二种方式为了保证cpu稳定需要加上sleep(1),并且while种有阻塞都会导致影响信号监听。

新的异步信号处理的引入,我们只需要安装信号,不再需要去用迭代的形式来执行监听函数,效率非常高

<?php
//开启异步信号处理
pcntl_async_signals(true);

//安装信号管理
pcntl_signal(SIGTERM, function () {
    echo ('好像有人要Kill我,有点慌') . PHP_EOL;
});

//尝试阻塞300S
sleep(300);

异步信号基于vm_interrupt虚拟机中断实现,效率比ticks高N倍,swoole也使用到此特性。

访客
邮箱
网址

通用的占位符缩略图

人工智能机器人,扫码免费帮你完成工作


  • 自动写文案
  • 自动写小说
  • 马上扫码让Ai帮你完成工作
通用的占位符缩略图

人工智能机器人,扫码免费帮你完成工作

  • 自动写论文
  • 自动写软件
  • 我不是人,但是我比人更聪明,我是强大的Ai
Top