macOS 中使用 launchd 每分钟执行一次 PHP 脚本的完整配置指南

本文详解如何在 macOS 上通过 launchd(配合 .plist 配置文件)替代传统 cron,实现每分钟自动运行 PHP 脚本,涵盖 plist 编写、权限设置、加载调试及关键避坑提示。 本文详解如何在 macos 上通过 `launchd`(配合 `.plist` 配置文件)替代传统 cron,实现每分钟自动运行 php 脚本,涵盖 plist 编写、权限设置、加载调试及关键避坑提示。在 macOS 系统中,launchd 是官方推荐的守护进程管理机制,比传统 cron 更可靠、更集成,尤其适合用户级定时任务(如每分钟执行一个 PHP 脚本)。与 Linux 的 crontab 不同,launchd 通过 XML 格式的 .plist 文件定义任务行为,支持精确的时间间隔、环境隔离和自动重启等高级特性。? 正确创建 LaunchAgent plist 文件将以下内容保存为 ~/Library/LaunchAgents/com.yourname.php-minutely.plist(请将 yourname 替换为实际用户名,并确保命名符合反向域名规范):<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>Label</key> <string>com.yourname.php-minutely</string> <key>ProgramArguments</key> <array> <string>/usr/bin/php</string> <string>/Users/yourname/projects/myapp/script.php</string> </array> <key>WorkingDirectory</key> <string>/Users/yourname/projects/myapp</string> <key>StartInterval</key> <integer>60</integer> <key>RunAtLoad</key> <true/> <!-- ?? 生产环境默认注释掉;仅调试时启用 --> <!-- <key>StandardOutPath</key> <string>/tmp/php-minutely.log</string> <key>StandardErrorPath</key> <string>/tmp/php-minutely.err</string> --></dict></plist>? 关键字段说明: Label:唯一标识符,必须与文件名一致(不含 .plist 后缀); ProgramArguments:不可用 shell -c 包裹,需显式指定 PHP 解释器路径(建议用 which php 确认)及脚本绝对路径; WorkingDirectory:确保脚本内相对路径(如 include 'config.php';)能正确解析; StartInterval 60:严格按秒计时,每 60 秒触发一次(非"每分钟整点"); RunAtLoad:系统登录后立即启动,避免首次延迟。? 设置权限并加载任务# 设置标准权限(644 是 launchd 强制要求)chmod 644 ~/Library/LaunchAgents/com.yourname.php-minutely.plist# 验证权限(应显示 -rw-r--r--)ls -l ~/Library/LaunchAgents/com.yourname.php-minutely.plist# 加载配置(无需 sudo,因属用户级 LaunchAgent)launchctl load ~/Library/LaunchAgents/com.yourname.php-minutely.plist# ? 可选:立即手动触发一次测试launchctl start com.yourname.php-minutely? 提示:若加载失败,运行 launchctl list | grep yourname 查看是否已注册;错误日志可通过 console.app 搜索 com.yourname.php-minutely 实时追踪。 稿定AI 拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能

相关推荐
投票竞赛3 分钟前
作品投票版权注意事项,线上评选上传图片视频须知
python·音视频
2601_962293537 分钟前
人工智能 & 神经网络完整入门路线(零基础可走,分阶段)
人工智能·python·深度学习·神经网络·机器学习
Wang's Blog23 分钟前
Java框架快速入门: Spring Security+OAuth2之邮件验证码发送(SMTP与API方式)
java·数据库·spring
“AI国潮设计-小江”34 分钟前
【Python/SDXL实战】潮汕国潮IP视觉落地:普宁英歌舞猫IP & 创意甜品设计(附ComfyUI工作流与商业授权说明)
开发语言·人工智能·python·prompt·aigc
529宝宝起名网43 分钟前
用 Python 分析汉字字源与起名用字的关联规律:从六书结构到文化寓意的起名偏好洞察
开发语言·python
一只旭宝1 小时前
Python 与 C/C++ 内存模型对比总结
c语言·c++·python
砚底藏山河1 小时前
容错重试与指数退避:网络抖动手抖不再丢数据(魔码量化实战 #04)
java·数据库·python·金融
今儿敲了吗2 小时前
02词云生成器
笔记·python
李高钢2 小时前
Python Tornado 框架入门:从零搭建你的第一个异步 Web 应用
前端·python·tornado
蓝速科技2 小时前
会议室门牌触控预约选型与落地实战指南丨蓝速科技
大数据·运维·数据库·人工智能·科技