php 设备档期管理模块,【定时/计划任务】模块发布

2024-02-24 09:59

本文主要是介绍php 设备档期管理模块,【定时/计划任务】模块发布,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介:

此模块可以在网站系统的后台管理定时任务,让系统自动的定时的执行SQL,Shell或者请求指定的URL。

任务计划使用与 linux 一致的的 cron 表达式进行配置,所以非常灵活。例如:0 23 ? * MON-FRI 这样配置就可以设置任务在 每周一至周五晚上11点30分执行计划任务。至于  cron 表达式请自行百度查询!

模块大量抄袭了 FastAdmin 的设计,但 FastAdmin 不能后台查看任务的执行结果,只能在服务器上查看日志文件,而且日志记录还不完整。不过我们还是要感谢FastAdmin作者!

FastAdmin项目地址: git.oschina.net/karson/fastadmin

应用场景举例:

定时执行SQL,比如定时清理某些日志表;

定时访问某个本地路径或者远程的URL,让其做某些工作;

定时执行Shell命令,比如定时更新网站搜索引擎的索引。

安装流程:

1. 安装这两个依赖包composer require mtdowling/cron-expression

composer require guzzlehttp/guzzle

说明:

mtdowling/cron-expression 是用来解析、计算 cron 表达式的关键组件;

guzzlehttp/guzzle 用来请求远程 url 的。

2. 安装模块

把模块包解压后放到 application 目录,然后进系统后台安装本模块。

3. 把系统入口文件 index.php 改为下面代码

DolphinPHP V1.0.8 版本使用下面代码// 定义应用目录

define('APP_PATH', __DIR__ . '/application/');

// 定义后台入口文件

define('ADMIN_FILE', 'admin.php');

// 检查是否安装

if(!is_file(__DIR__ . '/data/install.lock')){

define('BIND_MODULE', 'install');

}

// 加载框架基础文件

require __DIR__ . '/thinkphp/base.php';

// cli 模式关闭路由

if (PHP_SAPI == 'cli'){

\think\App::route(false);

}

// 执行应用

\think\App::run()->send();

DolphinPHP V1.1.0 以上版本使用下面代码// 定义应用目录

define('APP_PATH', __DIR__ . '/../application/');

// 定义后台入口文件

define('ADMIN_FILE', 'admin.php');

// 检查是否安装

if(!is_file(__DIR__ . '/../data/install.lock')){

define('BIND_MODULE', 'install');

}

// 加载框架基础文件

require __DIR__ . '/../thinkphp/base.php';

// cli 模式关闭路由

if (PHP_SAPI == 'cli'){

\think\App::route(false);

}

// 执行应用

\think\App::run()->send();

说明:

把相对路径改成绝对路径的目的是为了使定时任务可以在命令行下的任意位置执行;

cli模式下必须关闭系统的路由功能,否则 ThinkPHP 在检查路由的时候会报错,这貌似是 ThinkPHP 的BUG;

4. 开启PHP的 shell_exec() 函数

打开 php.ini ,在里面搜索 disable_functions ,然后把等号后面的 shell_exec 删掉

执行 /etc/init.d/httpd restart 重启 Apache ,如果是 Nginx 的话执行 /etc/init.d/php-fpm restart 重启 PHP

5. 添加一个Linux上的crontab定时任务

执行 crontab -e ,在里面添加一条定时任务,让服务器每1分钟访问一次我们的任务执行接口* * * * * /usr/bin/php /你网站的完整根路径(绝对路径)/index.php /crontab/autotask(1、注意空格;2、注意 DolphinPHP V1.1.0 以上版本入口文件是在 public 目录)

6. 到网站后台添加任务即可

截图:

5aa8a54425ff198de4144aa772ac94d0.png

任务列表

fd34e162608741d35391a10050f90508.png

请求本地路径配置

66015b723d6a59402df1a273ca7c81cb.png

配置定时执行SQL

63215e56eabcfa416fcec8c2466b2519.png

请求远程URL,这里故意把url写错,用来测试请求失败的效果

1a2738aec2ec45fd772b191cc26601c4.png

执行的任务日志列表

fb354503660c7cadf39d9d0c9e629e61.png

可以看到,上面请求远程URL的任务内容配置错了,这里执行失败后便记录下了错误内容

618ff633ed9ebc7066597d8048af677f.png

执行Shell命令后记录返回的结果

模块包:

适用于 DolphinPHP V1.0.8

从 DolphinPHP 1.0.8 升级到 1.1.0

1、升级时如果用升级包里的 vendor 替换了原系统的 vendor,请检查模块需要的那两个依赖包是否存在,如果被替换或删除了,请重新安装;

2、升级后如果覆盖了 index.php 入口文件,请照文中方法修改;

3、重新下载文中适用于 DolphinPHP V1.1.0 以上版本的模块包进行覆盖(实际上是需要覆盖 /crontab/view/admin/index/add.html 文件和 /crontab/home/Autotask.php 即可)

4、执行 crontab -e 命令,修改 Linux 定时任务中网站系统入口文件的绝对路径,因为 1.1.0 把入口调整到了 public 目录,这里也需要在 index.php 前面加上 public

更新日志:

2018-02-21:

1. 修复升级到 Dolphinphp v1.1.0 后本地 URL 任务执行错误问题;

2018-01-24:

1. 修改模板文件以支持 DolphinPHP V1.1.0 以上版本;

2. 上文中的安装说明新增 DolphinPHP V1.1.0 以上版本注意事项;

2017-10-27:

1. 支持 DolphinPHP V1.0.8(V1.0.8以下版本需要删除表格构建器的raw()方法,V1.0.7系统有BUG,所以不支持);

2. 把 rmccue/requests 组件换成 guzzlehttp/guzzle;

2017-07-15:

1. 更换掉后台任务管理模板的那种蛋疼的写法;

2. 修改任务执行接口上的一个小bug;

注意:

不支持windows环境

这篇关于php 设备档期管理模块,【定时/计划任务】模块发布的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/741751

相关文章

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

python中time模块的常用方法及应用详解

《python中time模块的常用方法及应用详解》在Python开发中,时间处理是绕不开的刚需场景,从性能计时到定时任务,从日志记录到数据同步,时间模块始终是开发者最得力的工具之一,本文将通过真实案例... 目录一、时间基石:time.time()典型场景:程序性能分析进阶技巧:结合上下文管理器实现自动计时