PHP使用ignore_user_abort()实现定时循环执行PHP任务的方法
更新:2020-03-29 09:06:14
人气:2109
来源:本站整理
A+
我们通常做定时任务需要做到代码自动执行,往往会借助系统来实现,例如linux的crontab或者windows的定时计划等等,现在分享一个纯代码实现的自动执行。
下面是用到的一窜PHP的执行代码,效率不是很好,但是能保持任务自动执行。
结合set_time_limit()函数实现一个循环脚本执行任务
<?php
ignore_user_abort();// 即使client 断开(如关闭浏览器),PHP 脚本也可以继续执行。
set_time_limit(0);
$interval=60*15;
do{
if(xxx)break;//记住退出
//执行的业务}while(true);
?>
//说明:每隔15分钟循环执行自定义实现文件输出并跟踪ignore_user_abort()函数的执行结果
<?php
ignore_user_abort ( TRUE );
set_time_limit ( 0 );
$interval = 10;
$stop = 1;
do {
if( $stop == 10 ) break; //退出
file_put_contents('liuhui.php',' Current Time: '.time().' Stop: '.$stop);//记得权限
$stop++;
sleep ( $interval );
} while( true);
?>[代码]task.php(任务主文件)
<?php
ignore_user_abort(); //关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0); // 通过set_time_limit(0)可以让程序无限制的执行下去
$interval = 15; // 每隔*秒运行
$temp_key = 0;
do {
$time = time();
require 'config.php';
$mem = new Memcache();
$mem->connect($Memcache_server, $Memcache_port);
if ($is_send) {
$get_time = $mem->get('tem_data');
} else {
$get_time = $time + 86400;
exit();
}
if ($get_time == $time) {
$mem->close();
exit();
} else if ($get_time > $time - $interval) {
$mem->close();
} else if ($temp_key == 0) {
$temp_key = 1;
@file_get_contents('http://******/*****.php');
$mem->set('tem_data', $time, MEMCACHE_COMPRESSED, $Memcache_date);
$mem->close();
sleep(mt_rand(1, 3));
$temp_key = 0;
}else{
$mem->close();
exit();
}
//这里是你要执行的代码
sleep($interval); // 等待*秒钟
} while (true);
?>[代码]config.php(配置文件)
<?php $Memcache_server = '127.0.0.1'; $Memcache_port = 11211; $Memcache_date = 86400; //return $is_send = false; //关闭定时任务 return $is_send = true; //开启定时任务 ?>
注:sleep可以,但是弊端多。还是用计划任务定时访问比较好。
推荐的文章
随手记
- ● 统信UOS系统如何设置指定时间自动重启系统的方法
- ● 自制(IP或域名)可信任的SSL证书,适用360、chrome等浏览器
- ● windows系统下php无法使用curl怎么办?
- ● 绿联UGREENKVM切换器(分屏器)快捷键丢失解决办法
- ● 统信UOS开机指定网址全屏启动自带浏览器以及屏蔽ALT+F4关闭
- ● xshellSSH连接Linux服务器防止超时退出
- ● php8开启OpenSSL扩展库报错disabledinstallext
- ● 统信系统linux安装php时的报错libxml-2.0>=2.7.6
- ● tidb关闭sql_mode=ONLY_FULL_GROUP_BY模式
- ● windows10如何开机自动运行bat文件
PHP经验分享
- ● PHP批量对TCP服务端指定多个IP非阻塞检查在线状态
- ● python实现TCP服务端持续接收关机、重启指令并输出结果【系列三】
- ● PHP给TCP服务端发送指令【系列二】
- ● PHP判断TCP服务端是否在线【系列一】
- ● PHP判断远程文件是否存在
- ● LINUX下用PHP获取CPU型号、内存占用、硬盘占用等信息代码
- ● PHP代码用UDP方式远程唤醒电脑让计算机开机
- ● apache下php生成验证码图片不能显示
- ● PHP使用AES加密解密示例(无偏移)
- ● Pluginmysql_native_passwordreported:''mysql_native_password'isdeprecate问题








