<?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}的问候\n";
if ($request->fd==2)
{
swoole_timer_tick(3000,function($timer_id)
{
//swoole_timer_tick 表示每几秒执行一次操作,第一个参数精确到毫秒
//回调函数中的$timer_id用来标注识别定时器ID,这一定时器id还用于time::clear()清楚定时器
//回调函数中还可使用其他参数,只不过是可选的
echo "3秒后,{$timer_id}开始执行\n";
});
}
} public function onmessage($serv,$frame)
{
echo "接到来自客户句柄----{$frame->fd}的问候,其操作类型为--{$frame->opcode},数据帧的完整状态{$frame->finish}\n";
swoole_timer_after(5000,function() use($serv,$frame){
echo "5秒后,返回客户端{$frame->fd}的数据{$frame->data}\n";
$serv->push("推送到达的时间".date('Y-m-d H:i:s')."\n");
});
$serv->push($frame->fd,$frame->data);
}
public function onclose($serv,$fd)
{
echo "关闭来自{$fd}的连接\n";
}
}
$cpc=new myticker();
?>

swoole 定时器 swoole_time_tick 和 swoole_time_after的更多相关文章

  1. 关于swoole 定时器有时候无法清除的解决方法

    关于swoole 定时器有时候无法清除的解决方法 有时候start里面写个定时器 有时候你关闭进程的时候 发现定时器还是可以进行 目前只有重启服务器才可以 清除 还有就是ps -ef | grep p ...

  2. swoole 定时器

    timer.php <?php //创建websocket服务器对象,监听0.0.0.0:9502端口 $ws = ); swoole_timer_tick(, function ($timer ...

  3. PHP框架Swoole的一个定时器Timer特性

    在各种业务型系统中,往往需要服务器在后台扫描相关数据,触发相应的统计.通知等操作. 比如对于一个项目管理系统,需要每天的特定时间内,统计每项任务的执行.到期情况.整个项目的进度等等,根据统计情况,做相 ...

  4. Swoole server函数列表(转载)

    swoole_server::__construct swoole_server::set swoole_server::on swoole_server::addlistener swoole_se ...

  5. php Swoole实现毫秒级定时任务

    项目开发中,如果有定时任务的业务要求,我们会使用linux的crontab来解决,但是它的最小粒度是分钟级别,如果要求粒度是秒级别的,甚至毫秒级别的,crontab就无法满足,值得庆幸的是swoole ...

  6. Swoole实现毫秒级定时任务

    项目开发中,如果有定时任务的业务要求,我们会使用linux的crontab来解决,但是它的最小粒度是分钟级别,如果要求粒度是秒级别的,甚至毫秒级别的,crontab就无法满足,值得庆幸的是swoole ...

  7. RabbitMQ 入门教程(PHP版) 延迟队列,延迟任务

    延迟任务应用场景 场景一:物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,就需要设置成超时. 场景二:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单. 场景三:过1分钟给新 ...

  8. <记录> PHP监控进程状态,完成掉线自动重启

    1. 利用Shell脚本实现 #!/bin/bash PORT= while [ true ];do read -p "please enter the port that you want ...

  9. PHP之高性能I/O框架:Libevent(三)

    Swoole Swoole里也提供了一些直接操作底层epoll/kqueue事件循环的接口,可将其他扩展创建的socket.PHP代码中stream/socket扩展创建的socket等加入到Swoo ...

随机推荐

  1. vim 显示行号 查找的命令简单总结

    1. linux vim 进行查找的方法 在command 模式下面 输入 /what-you-search 就可以搜索 注意  n 是向下查找 N 是向上查找 不想搜索了 输入 :set nol 就 ...

  2. (5.13)mysql高可用系列——1主3从复制(SSL)

    目录: [0]需求 目前使用Mysql数据库,100GB+数据量,需要实现1主3从环境. 需要实现SSL安全复制,同时需要测试异常宕机切换演练 [1]实验环境 数据库架构:主从复制,基于主库搭建3个从 ...

  3. 【LOJ】#3121. 「CTS2019 | CTSC2019」无处安放

    第一次有耐心去研究一道题答-- 以前看到题答要么扔要么就水能简单手玩出来的 1 2可以手玩出来,快乐! 4呢发现3 3比较格路,就把3 3都配了,一边带个4的除了4 4都塞满这么放进去,然后把一边带2 ...

  4. Android的视图(View)组件

    Android的绝大部分UI组件都放在android.widget包及其子包.android,view包及其子包中,Android应用的所有UI组件都继承了View类,View组件非常类似于Swing ...

  5. 第二天:python数据类型及常用方法

    数字类型 #1. 整型 a1 = 10 a2 = int(20) #2. 长整型(py2特有,py3废弃) b1 = 12345678901234567890 b2 = long(100) #3. 浮 ...

  6. Codeforces 1189E. Count Pairs

    传送门 可以算是纯数学题了吧... 看到这个 $(x+y)(x^2+y^2)$ 就可以想到化简三角函数时经常用到的操作,左右同乘 那么 $(a_i+a_j)(a_i^2+a_j^2) \equiv  ...

  7. C3.js入门案例

    C3.js是基于D3.js开发的JavaScript库,它可以让开发者构建出可复用的图表,并且还提供了一系列图表上的交互行为.通过C3,只需要往generate函数中传入数据对象就可以轻松的绘制出图表 ...

  8. 深入理解hadoop之HDFS

    深入理解hadoop之HDFS 刚刚才写完关于mapreduce的一篇博文,趁热打铁接下来聊聊HDFS.本博文参考资料为HADOOP权威指南第3版完版,博文如有错漏之处,敬请指正. HDFS即Hado ...

  9. vue的数据代理

    1. vue数据代理: data对象的所有属性的操作(读/写)由vm对象来代理操作2. 好处: 通过vm对象就可以方便的操作data中的数据3. 实现: 1). 通过Object.defineProp ...

  10. curl命令用法

    curl命令是一个功能强大的网络工具,它能够通过http.ftp等方式下载文件,也能够上传文件,同时支持HTTPS等众多协议,还支持POST.cookies.认证.从指定偏移处下载部分文件.用户代理字 ...