加入收藏 | 设为首页 | 会员中心 | 我要投稿 盐城站长网 (https://www.0515zz.cn/)- 运维、云管理、管理运维、智能数字人、AI硬件!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP中使用sleep函数实现定时任务实例分享

发布时间:2022-08-04 17:07:49 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了PHP中使用sleep函数实现定时任务实例分享,本文给出了多个使用sleep的例子,本文还可以作为学习sleep函数的教程,需要的朋友可以参考下 在PHP中,有一个sleep函数,大概意思是程序执行遇到sleep函数时暂停N秒后继续往下执行。如sleep(10)意思
  这篇文章主要介绍了PHP中使用sleep函数实现定时任务实例分享,本文给出了多个使用sleep的例子,本文还可以作为学习sleep函数的教程,需要的朋友可以参考下
 
  在PHP中,有一个sleep函数,大概意思是程序执行遇到sleep函数时暂停N秒后继续往下执行。如sleep(10)意思就是程序自上往下执行,遇到sleep(10)语句后暂停十秒,然后继续往下执行。函数括号内的参数是一个数值,代表暂停时间值,单位秒。请看下面一段代码
 
  <?php
  /**
   * sleep函数的用法
 
  1338088780
 
  1338088790
 
  我们来解析下执行过程,第一步是打印当前时间戳1338088780,然后暂停十秒,再打印时间戳。由于程序是等待了十秒然后再次打印时间戳,那么就是最后一次的时间戳肯定要比第一次打印的时间戳多十秒钟,结果最后一次的时间戳是1338088790。
 
  以上例子,我们只用了一次sleep函数,页面中可以无限制使用sleep()函数。请看以下代码:
 
  <?php
   echo time();   // out: 1338088790
  echo '<br />';
     
  // 暂停二十秒钟
  sleep(20);
     
  // 输出第三次时间戳
  echo time();   // out: 1338088810
  以上程序执行结果是:
 
  1338088780
 
  1338088790
 
  1338088810
 
  以上代码执行过程:
 
  第一,打印第一次时间戳1338088780
 
  第二,暂停十秒
 
  第三,打印第二次时间戳 1338088790,是第一次时间戳加上十秒后的总和
 
  第四,暂停二十秒
 
  第五,打印第三次时间戳 1338088810,是第二次时间戳1338088790加上二十秒后的总和。
 
  页面中出现两次sleep,第一次是十秒,第二次二十秒。由此得出以上实例总共执行三十秒。页面中多次出现sleep()函数时为累加而不是覆盖前面的代码。
 
  那如何结合sleep定时执行动态生成时间的代码呢?请看以下代码:
 
  <?php
  /**
   * sleep函数定时执行动态生成时间段的代码
   * 琼台博客
   */
  // 目前时间
  echo date('Y-m-d H:i:s'); // out:2012-05-27 14:58:00
  echo '<br />';
     
  // 动态生成时间 范围在今天下午六点到晚上零点前的任意时间
  $datetime = date('Y-m-d').' '.rand('18,23').':'.rand('0,59').':'.rand('0,59'); // 2012-05-27  
  sleep($reduce);
     
  // 执行到时间后执行的代码块
  echo date('Y-m-d H:i:s'); // out:2012-05-27 19:20:00
  以上代码输出:
 
  2012-05-27 14:58:00
 
  2012-05-27 19:20:00
 
  解析:开始打印当前时间,然后随机算出程序往后执行时间 2012-05-27 19:20:00,由于sleep接受参数是一个以秒为单位的一个数值,所以先把生成的时间转换为时间戳然后再用时间戳减去当前时间戳得出一个时间差,再sleep即可达到程序在随机生成时间执行某些语句达到定时执行效果。这里注意必须算的一个以秒为单位的时间差,如果不能算出秒差就没法使用sleep函数功能。

(编辑:盐城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读