宝塔+fastadmin:给项目添加定时任务

一、定时任务脚本编写

1. 使用 shebang 声明执行器

#!/usr/bin/env php
  • 这是 Unix/Linux 系统中脚本文件的标准开头。
  • 表示这个脚本使用系统环境变量中的 php 来执行。

2. 定义 ThinkPHP 入口路径并加载框架

define('APP_PATH', __DIR__ . '/../../application/');
require __DIR__ . '/../../thinkphp/start.php';
  • APP_PATH:定义了项目的入口目录。
  • 加载 ThinkPHP 框架,使你可以使用 Db 类、模型等功能。

3. 引入 ThinkPHP 的数据库类

use think\Db;
  • 方便后续操作数据库。

4. 判断是否是周一的方法

function isMonday() {return date('w') == 1;
}
  • 使用 date('w') 获取当前星期几:
    • 0 = 周日
    • 1 = 周一 ✅
  • 所以这个函数返回 true 表示今天是 周一

5. 获取上周的周标识(格式如:2025-W20)

function getLastWeekIdentifier() {$last_week = strtotime("-1 week");$year = date("Y", $last_week);$week = date("W", $last_week);return "{$year}-W{$week}";
}
  • strtotime("-1 week"):获取上周同一时间的时间戳
  • date("W", ...):ISO-8601 周数(从 1 开始)
  • 返回值示例:2025-W20

6. 日志记录函数

function logMessage($message) {$logFile = __DIR__ . "/update_log.txt";file_put_contents($logFile, "【" . date('Y-m-d H:i:s') . "】" . $message . "\n",     FILE_APPEND);
}
  • 把每次运行的信息写入日志文件 update_log.txt
  • 便于调试和查看执行情况

🧱 主逻辑部分(try-catch 包裹)

try {

用 try-catch 包裹整个逻辑,确保出错时能捕获异常并记录日志。


7. 判断是否是周一

if (!isMonday()) {logMessage("不是周一,跳过任务");exit("不是周一,跳过任务\n");
}
  • 如果不是周一,直接退出程序,不执行更新操作

8. 获取上周标识并记录日志

$lastWeek = getLastWeekIdentifier();
logMessage("🔍正在处理上周周标识:{$lastWeek}");
  • 获取上周的周标识(如 2025-W20
  • 记录日志方便后续查看

9. 查询上周的数据

$records = Db::table('weekly_emitem_apply_setting')
->where('week', $lastWeek)
->select();
  • 查询所有 week = '2025-W20' 的记录
  • 准备进行字段更新

10. 遍历每条记录并处理

foreach ($records as $record) {$id = $record['id'];$employee_num = $record['employee_num'];$item_no = $record['item_no'];$actual_total = $record['actual_total_qty'];$week_apply = $record['week_apply_qty'];
  • 提取每条记录的关键字段
  • 如员工编号、料号、累计数量、本周申请量等

11. 计算新的累计数量

$newTotal = $actual_total + $week_apply;
  • 将本周申请量累加到累计数量中

12. 获取当前周标识(如:2025-W21)

$currentWeek = date("Y") . "-W" . str_pad((int)date("W"), 2, 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/83919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日Prompt:自拍生成摇头娃娃

提示词 将这张照片变成一个摇头娃娃:头部稍微放大,保持面部准确,身体卡通化。[把它放在书架上]。

【Tools】neovim操作指南

Neovim 中最常见、最实用的操作, 主要针对C 开发需求&#xff1a; &#x1f680; 基础操作 操作快捷键说明保存:w 或 ZZ保存当前文件退出:q 或 ZQ退出当前窗口保存并退出:wq 或 ZZ保存并退出强制退出:q!不保存直接退出撤销u撤销上一步重做<C-r>重做撤销搜索/xxx向下搜索…

Visual Studio 制作msi文件环境搭建

一、插件安装 a. 插件寻找 在 Visual Studio 2017 中&#xff0c;如果你希望安装用于创建 MSI 安装包的插件&#xff0c;第一步是&#xff1a;打开 Visual Studio 后&#xff0c;点击顶部菜单栏中的 “工具”&#xff08;Tools&#xff09;&#xff0c;然后选择下拉菜单中的 “…

深入解析 OpenManus:开源 AI 智能体框架的技术原理与实践

深入解析 OpenManus&#xff1a;开源 AI 智能体框架的技术原理与本地部署指南 在当今人工智能快速发展的时代&#xff0c;智能体&#xff08;Agent&#xff09;技术正逐渐成为推动自动化和智能化的关键力量。OpenManus&#xff0c;由 MetaGPT 团队开发的开源 AI 智能体框架&am…

利用 SQL Server 作业实现异步任务处理,简化系统架构

在现代企业系统中&#xff0c;异步任务是不可或缺的组成部分&#xff0c;例如&#xff1a; 电商系统中的订单超时取消&#xff1b; 报表系统中的异步数据导出&#xff1b; CRM 系统中的客户积分计算。 传统的实现方式通常涉及引入消息队列&#xff08;如 RabbitMQ、Kafka&a…

ubuntu sh安装包的安装方式

ubuntu sh安装包的安装方式以Miniconda2为例 https://repo.anaconda.com/miniconda/ 如果需要python2.7版本可下载以下版本 Miniconda2-latest-Linux-x86_64.sh 打开终端输入安装命令 sudo sh Miniconda2-latest-Linux-x86_64.sh 然后按提示安装&#xff0c;注意安装位置 …

gRPC开发指南:Visual Studio 2022 + Vcpkg + Windows全流程配置

前言 gRPC作为Google开源的高性能RPC框架&#xff0c;在微服务架构中扮演着重要角色。本文将详细介绍在Windows平台下&#xff0c;使用Visual Studio 2022和Vcpkg进行gRPC开发的完整流程&#xff0c;包括环境配置、项目搭建、常见问题解决等实用内容。 环境准备 1. 安装必要组…

C#控制流

&#x1f9e9; 一、控制流概述 C# 中的控制流语句用于根据条件或循环执行代码块。它们是程序逻辑的核心部分。 ✅ 二、1. if、else if、else int score 85;if (score > 90) {Console.WriteLine("优秀"); } else if (score > 60) {Console.WriteLine("及…

你知道mysql的索引下推么?

在此之前&#xff0c;需要先明白mysql内部的一个大致结构&#xff0c;mysql内部大概是划分为3处&#xff0c;client客户端连接&#xff0c;server层&#xff0c;存储引擎层 索引下推是mysql5.6之后内部的一种索引优化手段。 比如现在我有一张表student表&#xff0c;字段有id&…

mysql的基础命令

1.SQL的基本概念 SQL 是用于管理和操作关系型数据库的标准编程语言。是所有关系型数据库&#xff08;如 MySQL、PostgreSQL、Oracle 等&#xff09;的通用语言。 SQL语句分类 DDL: Data Defination Language 数据定义语言 CREATE&#xff0c;DROP&#xff0c;ALTER DML: Da…

Python爬虫实战:研究加密参数的定位方法,实现逆向解密

一、引言 在数字化信息时代,网络数据成为重要的战略资源。Python 以其简洁的语法和丰富的库生态,成为网络爬虫开发的首选语言。然而,随着互联网安全防护意识的增强,网站普遍采用加密技术保护数据接口,如请求参数加密、会话验证、动态令牌等,这使得传统爬虫技术面临巨大挑…

轴承表面缺陷检测数据集VOC+YOLO格式3945张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;3945 标注数量(xml文件个数)&#xff1a;3945 标注数量(txt文件个数)&#xff1a;3945 标注…

【51单片机中断】

目录 配置流程 1.在IE寄存器中开启总中断通道和需要的某中断通道 2.在TCON寄存器开启所用中断的触发方式 3.使用中断函数完成中断 4.若需要中断嵌套则在IP寄存器中配置 5.若需要使用串口的中断&#xff0c;则配置SCON寄存器 6.代码示例 配置流程 1.在IE寄存器中开启总…

【机器学习】Anaconda安装后打不开jupyter notebook(网页不自动跳出)

文章目录 一、遇到的问题&#xff1a;jupyter notebook网页不自动跳出&#xff08;一&#xff09;输入jupyter notebook命令&#xff08;二&#xff09;手动打开网页 二、解决办法&#xff1a;指定浏览器&#xff08;一&#xff09;找文件 jupyter_notebook_config.py&#xff…

数字格式化库 accounting.js的使用说明

accounting.js 是一个用于格式化数字、货币和金额的轻量级库&#xff0c;特别适合财务和会计应用。以下是其详细使用说明&#xff1a; 安装与引入 通过 npm 安装&#xff1a; bash 复制 下载 npm install accounting 引入&#xff1a; javascript 复制 下载 const accounting …

DeepSpeed简介及加速模型训练

DeepSpeed是由微软开发的开源深度学习优化框架&#xff0c;专注于大规模模型的高效训练与推理。其核心目标是通过系统级优化技术降低显存占用、提升计算效率&#xff0c;并支持千亿级参数的模型训练。 官网链接&#xff1a;deepspeed 训练代码下载&#xff1a;git代码 一、De…

集星獭 | 重塑集成体验:新版编排重构仿真电商订单数据入库

概要介绍 新版服务编排以可视化模式驱动电商订单入库流程升级&#xff0c;实现订单、客户、库存、发票、发货等环节的自动化处理。流程中通过循环节点、判断逻辑与数据查询的编排&#xff0c;完成了低代码构建业务逻辑&#xff0c;极大提升订单处理效率与业务响应速度。 背景…

AMO——下层RL与上层模仿相结合的自适应运动优化:让人形行走操作(loco-manipulation)兼顾可行性和动力学约束

前言 自从去年24年Q4&#xff0c;我司「七月在线」侧重具身智能的场景落地与定制开发之后 去年Q4&#xff0c;每个月都会进来新的具身需求今年Q1&#xff0c;则每周都会进来新的具身需求Q2的本月起&#xff0c;一周不止一个需求 特别是本周&#xff0c;几乎每天都有国企、央企…

MATLAB中进行语音信号分析

在MATLAB中进行语音信号分析是一个涉及多个步骤的过程&#xff0c;包括时域和频域分析、加窗、降噪滤波、端点检测以及特征提取等。 1. 加载和预览语音信号 首先&#xff0c;你需要加载一个语音信号文件。MATLAB支持多种音频文件格式&#xff0c;如.wav。 [y, fs] audiorea…

JWT令牌验证

一、JWT 验证方式详解 JWT&#xff08;JSON Web Token&#xff09;的验证核心是确保令牌未被篡改且符合业务规则&#xff0c;主要分为以下步骤&#xff1a; 1. 令牌解析与基础校验 收到客户端传递的 JWT 后&#xff0c;首先按 . 分割为三部分&#xff1a;Header、Payload、S…