php 定时器

本文介绍了如何在PHP中实现定时任务,包括使用sock跳转和通过数据库判断的方法,避免了文件操作的繁琐。
摘要由CSDN通过智能技术生成


//每晚11.55执行   启动apache 以后 访问首页开启 需要晚上11.55开启
// 启动apache app 目录下添加 cron-run 访问首页 启动  定时任务第一次执行的时间是每晚的11.55
//如果不存在cron-switch这个文件,就停止执行,这是一个开关的作用
function dowhile()
{
   
    //11.55维护 5分钟 禁止用户进行金额操作 购物 充值 提现  session 判断 cal_bal 前 session+  cal_bal后 session-
    ignore_user_abort(true);
    set_time_limit(0);
    date_default_timezone_set('PRC'); // 切换到中国的时间
    $run_time = strtotime(date("Y-m-d").' 23:55:00');// 定时任务第一次执行的时间是每晚的11.55
    $interval = 3600 * 24; // 每24个小时执行一次
    // 在目录下存放一个cron-run文件,如果这个文件不存在,说明已经在执行过程中了,该任务就不能再激活,执行第二次,否则这个文件被多次访问的话,服务器就要崩溃掉了
    if (!file_exists(dirname(__FILE__) . '/cron-run')) exit();
    do {
   
        // 如果不存在cron-switch这个文件,就停止执行,这是一个开关的作用
        if (!file_exists(dirname(__FILE__) . '/cron-switch')) break;
        // 当前的运行时间,精确到0.0001秒
        $gmt_time = microtime(true);
        // 这里处理是为了确定还要等多久才开始第一次执行任务,$loop就是要等多久才执行的时间间隔
        $loop = isset($loop) && $loop ? $loop : $run_time - $gmt_time;
        $loop = $loop > 0 ? $loop : 0;
        // 如果循环的间隔为零,则停止
        if (!$loop) break;
        sleep($loop);
        // 分钱
        \think\Session::set('dowhile', true);
        cal_bal();
        \think\Session::delete('dowhile');
        // 这里就是通过删除cron-run来告诉程序,这个定时任务已经在执行过程中,不能再执行一个新的同样的任务
        @unlink(dirname(__FILE__) . 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值