首页 > Web开发 > 详细

php原生定时扩展的使用(转载)

时间:2018-11-26 10:44:34      阅读:173      评论:0      收藏:0      [点我收藏+]
<?php
   
  class  Timer{
    //静态数组保存定时任务;
    protected   static  $task=[];
    //间隔时间;
    protected   static  $time=[];
    //开启服务
    public  static  function  run(){
            if($time){
            	self::$time=$time;
            }
            self::installHandler();
            pcntl_alarm(1);
    }
    //注册信号处理函数;
    public  static  function installHandler(){
    	    pcntl_alarm(SIGALRM,[‘Timer‘,‘signalHandler‘]);
    }
    //信号处理函数;
    public  function   signalHandler(){
    	self::task();
    	pcntl_alarm(self::$time);
    }
    //执行回调函数;
    public   static  function   task(){
             if(empty(self::$task)){
                return "";
             }
        foreach(self::$task as $time=>$arr){
             //遍历每一个
        	 foreach($arr as $k=>$job){
                     $func=$job[‘func‘];
                     $parm=$job[‘parm‘];
                     $inter=$job[‘inter‘];
                     $persist=$job[‘persist‘];
        	 }
        	 if($current==$time){
                //调用回调函数,传递参数;
                call_user_func_array($func, $parm);
                //删除任务
                unset(self::$task[$time][$k]);
        	 }
        	 if($persist){
                //持久化
                self::$task[$inter+$current]=$job;
        	 }
        }
        public  static   function  add($inter,$func,$parm=[],$persist){
                if(empty($inter)){
                   return ;
                }
                $time=time()+$inter;
            //写入定时任务;
            self::$task[$time][]=[‘func‘=>$func,‘parm‘=>$parm,‘inter‘=>$inter,‘persist‘=>$persist];
        }

        public  function  dell(){
        	  self::$task=[];
        }
    }
}

  

php原生定时扩展的使用(转载)

原文:https://www.cnblogs.com/wangfenphph2/p/10018977.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!