zoukankan      html  css  js  c++  java
  • swoole 定时器 swoole_time_tick 和 swoole_time_after

    <?php

    class myticker
    {
    public $server = null;
    CONST host = '127.0.0.1';
    CONST port = 9502;
    public function __construct()
    {
    $this->server = new swoole_websocket_server(myticker::host,myticker::port);
    $this->server->on('open',[$this,'onopen']);
    $this->server->on('message',[$this,'onmessage']);
    $this->server->on('close',[$this,'onclose']);

    $this->server->start();
    }
    public function onopen($serv,$request)
    {
    echo "接通!来自{$request->fd}的问候 ";
    if ($request->fd==2)
    {
    swoole_timer_tick(3000,function($timer_id)
    {
    //swoole_timer_tick 表示每几秒执行一次操作,第一个参数精确到毫秒
    //回调函数中的$timer_id用来标注识别定时器ID,这一定时器id还用于time::clear()清楚定时器
    //回调函数中还可使用其他参数,只不过是可选的
    echo "3秒后,{$timer_id}开始执行 ";
    });
    }
    }

    public function onmessage($serv,$frame)
    {
    echo "接到来自客户句柄----{$frame->fd}的问候,其操作类型为--{$frame->opcode},数据帧的完整状态{$frame->finish} ";
    swoole_timer_after(5000,function() use($serv,$frame){
    echo "5秒后,返回客户端{$frame->fd}的数据{$frame->data} ";
    $serv->push("推送到达的时间".date('Y-m-d H:i:s')." ");
    });
    $serv->push($frame->fd,$frame->data);
    }
    public function onclose($serv,$fd)
    {
    echo "关闭来自{$fd}的连接 ";
    }
    }
    $cpc=new myticker();
    ?>
  • 相关阅读:
    如何做兼容性测试
    python批量转换excl为csv
    mysql删除用户后再次创建用户报错
    xadmin
    CORS跨域资源共享
    drf自定义公共组件
    luffy项目前端初始化
    luffy项目后端初始化
    企业级项目的环境准备
    base64编码的使用
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/10984523.html
Copyright © 2011-2022 走看看