#!/usr/bin/env php
php
来执行。define('APP_PATH', __DIR__ . '/../../application/');
require __DIR__ . '/../../thinkphp/start.php';
APP_PATH
:定义了项目的入口目录。use think\Db;
function isMonday() {
return date('w') == 1;
}
date('w')
获取当前星期几:
0
= 周日1
= 周一 ✅true
表示今天是 周一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
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 包裹整个逻辑,确保出错时能捕获异常并记录日志。
if (!isMonday()) {
logMessage("不是周一,跳过任务");
exit("不是周一,跳过任务\n");
}
$lastWeek = getLastWeekIdentifier();
logMessage("正在处理上周周标识:{$lastWeek}");
2025-W20
)$records = Db::table('weekly_emitem_apply_setting')
->where('week', $lastWeek)
->select();
week = '2025-W20'
的记录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'];
$newTotal = $actual_total + $week_apply;
$currentWeek = date("Y") . "-W" . str_pad((int)date("W"), 2, "0", STR_PAD_LEFT);
date("W")
获取当前周数