php 定时器 sleep,PHP 使用sleep写的一个定时任务代码

//测试定时执行的代码

// include_once('test.php'); //加载配置

function a(){

return 1;

}

@ini_set('memory_limit', '64M'); //最大占用内存

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.

set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去

define('CRON_ROOT',dirname(__FILE__));

$lockfile = CRON_ROOT.'\\Returns\\lock.txt'; //自定义文件位置

if(!is_file($lockfile)){

file_put_contents($lockfile,''); //写入文件

}else{

die('文件已执行');

}

//配置信息 可以使用修改成数据库设置,文件配置等等

$set['time'] = strtotime(date('2017-11-14 00:35:00',time())); //返现记录日期(当天),设置的时间

$set['type'] = 'fen'; //分钟

$set['bei'] = 0.1; //倍数,例如 3天,3小时,3周

$set['status'] = true; //开启定时任务,false 关闭定时任务

$set['url'] = 'http://localhost:808/cron.php'; //当前文件URL

$now = time(); //当前时间

//分钟,小时,天,周

$rule = array(

'fen' =-->60,

'hour' =>60*60,

'day' =>60*60*24,

'week' =>60*60*24*7,

);

$returns_dir = CRON_ROOT.'\\Returns\\'.date('Y-m').'\\';

//日志文件夹不存在创建

if(!is_dir($returns_dir)){

mkdir($returns_dir);

}

//时间计算,

//1 当前时间 大于 返现设置时间,未返现,返现,等待下一次返现时间,执行脚本

//2 当前时间 大于 返现设置时间,已返现,等待下一次返现时间,执行脚本

if($now>=$set['time']){

$bei = 1;

do {

$nexttime = $set['time']+$rule[$set['type']]*$set['bei']*$bei; //下一次返现时间,并且要大于当前时间

$bei++;

} while ( $now >= $nexttime );

$sleeptime = $nexttime-$now;

//判断 当前时间 是否需要返现

$lasttime = $nexttime - ($rule[$set['type']]*$set['bei']); //当前返现时间

//当前返现时间小于 且 文件不存在(未返现) 且大于设置时间 需要返现

if($lasttime<=$now && $lasttime>=$set['time']){

$name = $returns_dir.date('Ymd-H-i-s',$lasttime).'.txt'; //当前返现日志名

//日志不存在创建

if(!is_file($name)){ //文件不存在,未赠款

file_put_contents($name,''); //写入文件

//开始执行 定时任务

// error_log(var_export(a(),true),3,'log.txt'); //执行的代码测试使用

}

}

}else{

$sleeptime = $set['time']-$now;

}

//判断是否开启定时返现功能

if($set['status']){

// 更精确的时间控制

// $ss = 1000000;//1秒 // usleep($time);

// usleep($sleeptime*$ss); //1s 等于 一百万

$ss = 1;

sleep($sleeptime); //1s

file_get_contents($set['url']);

}else{

unlink($lockfile); //限制运行多个脚本

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值