美文网首页
如何实现一个优雅的 While (true)循环

如何实现一个优雅的 While (true)循环

作者: 骑蚂蚁上高速_jun | 来源:发表于2020-03-20 21:19 被阅读0次

目标:
在后台进程中 写一个while(true) 循环, 要求该循环实现
优雅的停止(不影响业务) 和 重新加载业务代码(不影响现有业务)。

实现原理:
通过 linux服务器的信号处理,程序本身通过接收外部信号而对软件代码层的一种机制实现。

通过 php 实现:

$run = true; // 循环的标识
/**
 * 安装 SIGUSR1 信号监听器
 */
pcntl_signal(SIGUSR1, function ($signo) use(&$run){

    if($signo == SIGUSR1){
        echo "重载业务文件 require | include... \n";
    }

});

/**
 * 安装 SIGTERM 信号监听器
 */
pcntl_signal(SIGTERM , function ($signo) use(&$run){

    if ($signo == SIGTERM){
        echo "服务器优雅停止 \n";
        $run = false;
    }

});

while($run){
    /**
     * 异步等待信号并 触发安装的信号
     * 该函数有两个功能,
     * 1.等待接收信号;2.异步触发信号
     * 执行顺序, 先1后2
     * 备注说明: 只有在实现第一步接收到信号时,才能触发对应的信号
     */
    pcntl_signal_dispatch();// dengda
    sleep(20); // 模拟业务逻辑执行

}

相关文章

  • 如何实现一个优雅的 While (true)循环

    目标:在后台进程中 写一个while(true) 循环, 要求该循环实现优雅的停止(不影响业务) 和 重新加载业...

  • js循环

    循环语句 while(条件){ 条件为true执行; } 列:while 循环 var a=1; while(a<...

  • Android 源码-循环处理机制的实现

    Volley 线程中使用while(true)实现循环,处理队列中的request NetworkDispatch...

  • Java 基础 Day05

    循环结构 循环结构的三种方式: while循环 while (循环条件 true/false) { 循...

  • Day06

    Java中对while(true)的理解 while(true)作为无限循环,经常在不知道循环次数的时候使用,并且...

  • while 循环

    1、while 循环while True:print("我喜欢Python")注意:关键词True、False 要...

  • while循环和for循环

    while 循环 while(true){// 无意义 死循环console.log("一直执行");}while...

  • 2018-11-22

    5) for 循环 for : 重复执行语句 6) while 循环 while : 条件为true时执行循环体 ...

  • Python-3rd

    while循环: 1 无限循环 while True: print("你是傻子") 2. 计数循环 count...

  • Javascript之循环语句

    一、while循环while语法: while (条件){ 代码(循环体) }; 注:(1)、只有当条件为true...

网友评论

      本文标题:如何实现一个优雅的 While (true)循环

      本文链接:https://www.haomeiwen.com/subject/ezusyhtx.html