首页 > 后端开发 > 正文

php框架定时任务 php discuz的定时任务是什么原理怎么实现的?求高手解答

2023-09-20 09:10:24 | 我爱编程网

很多关注后端开发的朋友很希望了解php框架定时任务 php discuz的定时任务是什么原理怎么实现的?求高手解答,今天我爱编程网为大家整理了相关文章,一起来看看吧!

php框架定时任务 php discuz的定时任务是什么原理怎么实现的?求高手解答

PHP实现定时任务的几种方法

一. 简单
<?php
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
ini_set('memory_limit','512M'); // 设置内存限制
$interval=60*30;// 每隔半小时运行
do{
//ToDo
sleep($interval);// 等待5分钟
}
while(true);

二. 简单 可控型

config.php

<?php
return 1;
?>

cron.php

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*30;// 每隔半小时运行
do{
$run = include 'config.php';
if(!$run) die('process abort');

//ToDo
sleep($interval);// 等待5分钟
}
while(true);

三. 简单 改进型

<?php
$time=15;
$url="".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
/*
function
*/
sleep($time);
file_get_contents($url);
?>

php框架定时任务 php discuz的定时任务是什么原理怎么实现的?求高手解答我爱编程网

php discuz的定时任务是什么原理怎么实现的?求高手解答

php中定时计划任务的实现原理:
当 PHP 脚本正常地运行 NORMAL 状态时,连接为有效。当远程客户端中断连接时,ABORTED 状态的标记将会被打开。远程客户端连接的中断通常是由用户点击 STOP 按钮导致的。当连接时间超过 PHP 的时限时,TIMEOUT 状态的标记将被打开。

示例代码:

<?php
ignore_user_abort(true);set_time_limit(0);
date_default_timezone_set('PRC'); // 切换到中国的时间

$run_time = strtotime('+1 day'); // 定时任务第一次执行的时间是明天的这个时候
$interval = 3600*12; // 每12个小时执行一次

if(!file_exists(dirname(__FILE__).'/cron-run')) exit(); // 在目录下存放一个cron-run文件,如果这个文件不存在,说明已经在执行过程中了,该任务就不能再激活,执行第二次,否则这个文件被多次访问的话,服务器就要崩溃掉了

do {
if(!file_exists(dirname(__FILE__).'/cron-switch')) break; // 如果不存在cron-switch这个文件,就停止执行,这是一个开关的作用
$gmt_time = microtime(true); // 当前的运行时间,精确到0.0001秒
$loop = isset($loop) && $loop ? $loop : $run_time - $gmt_time; // 这里处理是为了确定还要等多久才开始第一次执行任务,$loop就是要等多久才执行的时间间隔
$loop = $loop > 0 ? $loop : 0;
if(!$loop) break; // 如果循环的间隔为零,则停止
sleep($loop);
// ...
// 执行某些代码
// ...
@unlink(dirname(__FILE__).'/cron-run'); // 这里就是通过删除cron-run来告诉程序,这个定时任务已经在执行过程中,不能再执行一个新的同样的任务
$loop = $interval;
} while(true);

php框架定时任务 php discuz的定时任务是什么原理怎么实现的?求高手解答

php如何自动执行定时任务



PHP本身是没有定时功能的,PHP也不能多线程。PHP的定时任务功能必须通过和其他工具结合才能实现,例如WordPress内置了wp-cron的功能,很厉害。本文,我们就来深入的解析几种常见的php定时任务的思路。
Linux服务器上使用CronTab定时执行php
我们先从相对比较复杂的服务器执行php谈起。服务器上安装了php,就可以执行php文件,无论是否安装了nginx或Apache这样的服务器环境软件。而Linux中,使用命令行,用CronTab来定时任务,又是绝佳的选择,而且也是效率最高的选择。
首先,进入命令行模式。作为服务器的linux一般都默认进入命令行模式的,当然,我们管理服务器也一般通过putty等工具远程连接到服务器,为了方便,我们用root用户登录。在命令行中键入:
crontab -e之后就会打开一个文件,并且是非编辑状态,则是vi的编辑界面,通过敲键盘上的i,进入编辑模式,就可以编辑内容。这个文件中的每一行就是一个定时任务,我们新建一行,就是新建一条定时任务(当然是指这一行内按照一定的格式进行书写)。我们现在来举个例子,增加一行,内容如下:
00 * * * * lynx -dump
00 * * * *就是指当当前时间的分钟数为00时,执行该定时任务。时间部分由5个时间参数组成,分别是:
分时日月周第1列表示分钟1~59 每分钟用或者 */1表示,/n表示每n分钟,例如*/8就是每8分钟的意思,下面也是类推
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
整个句子的后面部分就是操作的具体内容。
lynx -dump
00 */2 * * * /usr/local/bin/php /home/www/script.php这条语句就可以在每2小时的0分钟,通过linux内部php环境执行script.php,注意,这里可不是通过url访问,通过服务器环境来执行哦,而是直接执行,因为绕过了服务器环境,所以效率当然要高很多。
好了,已经添加了几条需要的定时任务了吧。点击键盘上的Esc键,输入“:wq”回车,这样就保存了设置的定时任务,屏幕上也能看到提示创建了新的定时任务。接下来就是好好写你的script.php了。
关于CronTab的更多用法这里就不介绍了,如果你想更灵活的使用这个定时任务功能,应该自己再去深入学习一下crontab。

以上就是我爱编程网为大家带来的php框架定时任务 php discuz的定时任务是什么原理怎么实现的?求高手解答,希望能帮助到大家,更多相关信息,敬请关注我爱编程网!
与“php框架定时任务 php discuz的定时任务是什么原理怎么实现的?求高手解答”相关推荐
框架定时任务怎么访问php php如何实现定时任务,php定时任务方法,最佳
框架定时任务怎么访问php php如何实现定时任务,php定时任务方法,最佳

php如何实现定时任务,php定时任务方法,最佳PHP制作定时任务(也称计划任务)的方法,大概分为2种:现在基本所有的PHP框架,如:ThinkPHP,Yii,Laravel等等;它们都是单入口的形式,也就是说所有的请求都集合到index.php中,然后再由框架核心来根据请求参数的不同来分配到不同的控制器当中。基于单入口的形式,那么就可以做基于行为(例如TP3.2)或者说基于事件

2023-10-03 14:44:18
php定时任务框架 PHP实现定时任务的几种方法
php定时任务框架 PHP实现定时任务的几种方法

PHP实现定时任务的几种方法一.简单&lt;?phpignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.set_time_limit(0);//通过set_time_limit(0)可以让程序无限制的执行下去ini_set('memory_limit','512M');//设置内存限制$interval=60*30;//每隔半小时运行do

2023-09-17 02:33:08
定时任务框架php PHP实现定时任务的几种方法
定时任务框架php PHP实现定时任务的几种方法

php如何自动执行定时任务PHP本身是没有定时功能的,PHP也不能多线程。PHP的定时任务功能必须通过和其他工具结合才能实现,例如WordPress内置了wp-cron的功能,很厉害。本文,我们就来深入的解析几种常见的php定时任务的思路。Linux服务器上使用CronTab定时执行php我们先从相对比较复杂的服务器执行php谈起。服务器上安装了php,就可以执行php文件,无论

2023-09-23 20:37:15
定时任务调度框架php php如何实现定时任务
定时任务调度框架php php如何实现定时任务

php如何自动执行定时任务PHP本身是没有定时功能的,PHP也不能多线程。PHP的定时任务功能必须通过和其他工具结合才能实现,例如WordPress内置了wp-cron的功能,很厉害。本文,我们就来深入的解析几种常见的php定时任务的思路。Linux服务器上使用CronTab定时执行php我们先从相对比较复杂的服务器执行php谈起。服务器上安装了php,就可以执行php文件,无论

2023-08-30 06:50:34
php定时框架 php如何实现定时任务,php定时任务方法,最佳
php定时框架 php如何实现定时任务,php定时任务方法,最佳

PHP实现定时任务的几种方法一.简单&lt;?phpignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.set_time_limit(0);//通过set_time_limit(0)可以让程序无限制的执行下去ini_set('memory_limit','512M');//设置内存限制$interval=60*30;//每隔半小时运行do

2023-09-11 05:19:14
php定时框架 php如何实现定时任务
php定时框架 php如何实现定时任务

php如何实现定时任务,php定时任务方法,最佳PHP制作定时任务(也称计划任务)的方法,大概分为2种:现在基本所有的PHP框架,如:ThinkPHP,Yii,Laravel等等;它们都是单入口的形式,也就是说所有的请求都集合到index.php中,然后再由框架核心来根据请求参数的不同来分配到不同的控制器当中。基于单入口的形式,那么就可以做基于行为(例如TP3.2)或者说基于事件

2023-09-11 05:19:26
php定时执行框架 PHP实现定时任务的几种方法
php定时执行框架 PHP实现定时任务的几种方法

PHP实现定时任务的几种方法一.简单&lt;?phpignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.set_time_limit(0);//通过set_time_limit(0)可以让程序无限制的执行下去ini_set('memory_limit','512M');//设置内存限制$interval=60*30;//每隔半小时运行do

2023-09-06 16:00:04
php语言定时任务框架 php定时执行任务的几个方法
php语言定时任务框架 php定时执行任务的几个方法

php定时执行任务的几个方法PHP定时执行的三种方式实现1、windows的计划任务2、linux的脚本程序3、让web浏览器定时刷新具体实现1、windows计划任务PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让window任务添加执行这个bat脚本。2、linux的脚本实现这里主要使用到crontab这个命令,

2023-09-27 23:48:37