//测试定时执行的代码
// 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); //限制运行多个脚本
}