Discuz,计划任务怎样使用

Discuz,计划任务怎样使用,第1张

1.当然首先是需要进入计划任务,下面的几个方法都可以进入“任务计划程序”:* “开始”-“控制面板”-“系统的维护”-拉到最下面点击“计划任务”;

* “开始”-右键点击“计算机”选择“管理”,在左侧界面中选择“任务计划程序”。

2.现在可以创建任务了。在右侧界面中选择“创建基本任务”(向导式创建任务,推荐新手使用)或者“创建任务”开始新建。

3.点击“创建基本任务”,现在要做的是定时关机,那么在名称输入“关机”,描述可以不用填写,完成后点击“下一步”。

4. 来到“任务触发器”,根据需要选择什么时候运行,这里选择每天(以后随时可以调整)。完成后点击“下一步”。然后会让你选择具体运行的时间,根据需要自行选择。

5.接下来会让你选择以什么方式运行这个任务,如果是要关机,那么选择“启动程序”后,点击“下一步”。

6.来到“启动程序”对话框,在“程序和脚本”下面输入"shutdown”(不含引号),“添加参数”里填上"-s -f -t 7200",完成后点击“下一步”,接着点击“完成”即创建完毕。时间一到,电脑就乖乖的关机啦。

安装新的任务类型,需将任务脚本程序上传到 source/class/task/ 目录,然后即可在后台--站点任务--任务类型--列表中安装并使用了。

插件开发人员在设计新的任务类型前请务必仔细阅读《Discuz! 技术文库》---http://dev.discuz.org/wiki/index.php?title=%E9%A6%96%E9%A1%B5中的内容

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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11172545.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存