zoukankan      html  css  js  c++  java
  • Swoole学习(六)Swoole之定时器的创建与清除

    环境:Centos6.4,PHP环境:PHP7,Swoole2.1(在指定的时间后执行函数,需要1.7.7或更高版本)

    <?php
    //---------------------------------------------------swoole_timer_tick--------------------------------------------------//
    //设置一个间隔时钟定时器,与after定时器不同的是tick定时器会持续触发,直到调用swoole_timer_clear清除。
    //int swoole_timer_tick(int $ms, callable $callback, mixed $user_param);
    //$ms 指定时间,单位为毫秒
    //$callback_function 时间到期后所执行的函数,必须是可以调用的。
    //$user_param 用户参数, 该参数会被传递到$callback_function中. 如果有多个参数可以使用数组形式. 也可以使用匿名函数的use语法传递参数到回调函数中
    //定时器仅在当前进程空间内有效
    //定时器是纯异步实现的,不能与阻塞IO的函数一起使用,否则定时器的执行时间会发生错乱
    //$ms 最大不得超过 86400000
    //tick定时器在1.7.14以上版本可用
    //定时器在执行的过程中可能会产生微小的偏差,请勿基于定时器实现精确时间计算
    swoole_timer_tick(2000, function ($timer_id) {  //每隔2000ms触发一次
        echo "tick-2000ms
    ";
    
    });
    //---------------------------------------------------swoole_timer_after--------------------------------------------------//
    //swoole_timer_after函数是一个一次性定时器,执行完成后就会销毁。此函数与PHP标准库提供的sleep函数不同,after是非阻塞的。而sleep调用后会导致当前的进程进入阻塞,将无法处理新的请求。
    
    //执行成功返回定时器ID,若取消定时器,可调用 swoole_timer_clear
    //int swoole_timer_after(int $after_time_ms, mixed $callback_function, mixed $user_param);
    //$after_time_ms 指定时间,单位为毫秒,最大不得超过 86400000
    //$callback_function 时间到期后所执行的函数,必须是可以调用的。
    //$user_param 用户参数, 该参数会被传递到$callback_function中. 如果有多个参数可以使用数组形式. 也可以使用匿名函数的use语法传递参数到回调函数中
    
    swoole_timer_after(3000, function () {  //3000ms后执行此函数
        echo "after 3000ms.
    ";
    });
    
    //--------------------------------------------------swoole_timer_clear---------------------------------------------------//
    //清除定时器
    //使用定时器ID来删除定时器。
    //bool swoole_timer_clear(int $timer_id)
    //$timer_id,定时器ID,调用swoole_timer_tick、swoole_timer_after后会返回一个整数的ID
    //swoole_timer_clear不能用于清除其他进程的定时器,只作用于当前进程
    $timer = swoole_timer_after(1000, function(){
        echo "timeout
    ";
    });
    
    var_dump(swoole_timer_clear($timer));
    var_dump($timer);
    
    // 输出:bool(true) int(1)
    // 不输出:timeout
  • 相关阅读:
    百科知识 scm文件如何打开
    百科知识 STEP文件如何打开
    百科知识 tar文件如何打开
    百科知识 kux文件如何打开
    app开发中如何利用sessionId来实现服务端与客户端保持回话
    什么是云虚拟主机以及和云服务器之间的区别
    2016年百度百科怎么创建词条(高级技巧篇)
    使用Jsoup获取网页内容超时设置
    如何让自己在天猫开通的商铺能够在百度中输入关键词就能够搜索到
    百度百科词条义项排名靠前秘诀
  • 原文地址:https://www.cnblogs.com/wt645631686/p/8287214.html
Copyright © 2011-2022 走看看