午夜免费_欧美一级免费看_欧美日韩一区二区视频在线观看_午夜视频在线_日本特黄a级高清免费大片_成年人黄色小视频

ReadyScheduler

Easyswoole 基础组件1.8.7版本起,提供了一个基于Swoole Table实现的就绪计划程序,用于解决主服务启动时,部分子服务未就绪问题。

基础测试使用

namespace EasySwoole\Component\Tests;

use EasySwoole\Component\ReadyScheduler;
use PHPUnit\Framework\TestCase;
use Swoole\Coroutine;

class ReadySchedulerTest extends TestCase
{
    function testNormal()
    {
        ReadyScheduler::getInstance()->addItem('worker');
        ReadyScheduler::getInstance()->addItem('rpc');
        ReadyScheduler::getInstance()->addItem('fastCache');

        go(function (){
            Coroutine::sleep(1);
            ReadyScheduler::getInstance()->ready('worker');
            ReadyScheduler::getInstance()->ready('rpc');
        });
        $this->assertEquals(false,ReadyScheduler::getInstance()->waitReady(['rpc','worker'],0.1));
        $this->assertEquals(true,ReadyScheduler::getInstance()->waitReady('rpc'));
        $this->assertEquals(true,ReadyScheduler::getInstance()->waitReady(['rpc','worker']));
        $this->assertEquals(false,ReadyScheduler::getInstance()->waitReady(['rpc','worker','fastCache'],1.1));
    }
}

EasySwoole服务中使用

以Http服务作为基础例子

namespace EasySwoole\EasySwoole;

use EasySwoole\Component\ReadyScheduler;
use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;
use Swoole\Coroutine;

class EasySwooleEvent implements Event
{

    public static function initialize()
    {
        // TODO: Implement initialize() method.
        date_default_timezone_set('Asia/Shanghai');
    }

    public static function mainServerCreate(EventRegister $register)
    {
        /*
         * 主进程初始化table
         */
        ReadyScheduler::getInstance();
        /*
         * 假设,服务启动的时候,依赖 serviceOne,serviceTwo 两个服务,例如链接第三方api等。
         * 在服务未就绪的时候,我们不希望本机器开始对外服务
         */
        $register->add($register::onWorkerStart,function ($serv, $workerId){
            if($workerId == 0){
                /*
                 * 若不是强制准备,请注意addItem,unready,ready实现方法
                 */
                Coroutine::sleep(3);
                ReadyScheduler::getInstance()->ready('serviceOne',true);
                var_dump('r1');
            }else if($workerId == 1){
                Coroutine::sleep(4);
                ReadyScheduler::getInstance()->ready('serviceTwo',true);
                var_dump('r2');
            }
        });
    }

    public static function onRequest(Request $request, Response $response): bool
    {
        /*
         * 链接进来的时候,判断依赖的服务是否就绪,等待时间为1s (tcp,ws服务也同理)
         * 在服务未就绪的时候,我们先拒绝服务
        */
        if(!ReadyScheduler::getInstance()->waitReady(['serviceOne','serviceTwo'],1.0)){
            $response->write('not ready,try again');
            return false;
        }
        return true;
    }

    public static function afterRequest(Request $request, Response $response): void
    {

    }
}
主站蜘蛛池模板: 日本女优久久久 | 99热精品免费 | 91大片| 午夜成年视频 | 亚洲精美视频 | 人人爱夜夜爽日日做蜜桃 | 99久久久国产精品免费调教sp | 亚洲一区二区三区四区在线观看 | 国产精品乱码一区二区三区视频 | 国产福利在线视频 | 91在线高清观看 | 久久精品国产午夜做受体验区 | 一区二区在线不卡视频 | 偷拍成人一区亚洲欧美 | 国产性久久久 | 91视频在线网站 | 日韩精品成人免费视频 | 成年免费视频 | 91香蕉视频导航 | 国产精品日韩久久 | 一本久道竹内纱里奈中文字幕 | 婷婷视频导航 | 91伦理在线观看 | 偷拍激情视频一区二区三区 | 一区二区在线不卡 | 久久久成人免费 | 久草污视频 | 91av电影在线观看 | 嫩草九九九精品乱码一二三 | 在线麻豆视频 | 国产日韩欧美一区二区久久精品 | 免费黄网入口 | 午夜性色a√在线视频观看9 | 91视频综合网 | 91精品国产高潮抽搐 | 97成人资源网 | 亚洲成色www久久网站瘦与人 | 91视频污版| 99国产精品久久久久久久久久 | 国产欧亚州美日韩综合区 | 亚洲精品久久久久国产 |