温馨提示×

LNMP如何设置定时任务

小樊
50
2026-07-23 05:35:31
栏目: 编程语言

在 LNMP(Linux + Nginx + MySQL + PHP) 环境下,一般不使用 Nginx 来做定时任务,而是由 Linux 系统层 提供定时任务机制。最常见、最标准的做法是使用 crontab。

下面按常见场景给你一个完整说明。


一、LNMP 设置定时任务的标准方式:crontab

1️⃣ 查看当前定时任务

crontab -l

2️⃣ 编辑定时任务

crontab -e

如果是第一次使用,可能会让你选择编辑器,推荐选 nano 或 vim。


3️⃣ crontab 基本格式

* * * * * 命令
分 时 日 月 周
字段 含义
分 0–59
时 0–23
日 1–31
月 1–12
周 0–7(0和7都是周日)

二、常见 LNMP 定时任务示例

✅ 1. 定时执行 PHP 脚本(最常见)

方式一:PHP CLI(推荐 ✅)

0 2 * * * /usr/bin/php /home/wwwroot/your_project/cron.php

查看 php 路径:

which php

方式二:通过 URL(curl / wget)

0 2 * * * curl https://example.com/cron.php

或

0 2 * * * wget -q https://example.com/cron.php

⚠️ 注意

  • 这种方式依赖 Nginx + PHP-FPM
  • 如果站点挂了,任务也会失败
  • 不推荐用于核心任务

✅ 2. 每天凌晨 2 点执行

0 2 * * *

✅ 3. 每 5 分钟执行一次

*/5 * * * *

✅ 4. 每小时执行一次

0 * * * *

三、LNMP 中 PHP 定时任务注意事项(非常重要)

✅ 1. PHP 执行方式不同

方式 是否推荐
PHP CLI ✅ 强烈推荐
PHP-FPM(curl) ⚠️ 不推荐

原因:

  • CLI 不依赖 Nginx
  • 不受超时限制
  • 更稳定

✅ 2. 权限问题

执行用户一般是 当前登录用户

如果 PHP 需要写文件:

chown -R www:www /home/wwwroot/your_project

或指定用户执行:

sudo crontab -u www -e

✅ 3. 使用绝对路径(非常重要)

❌ 错误:

php artisan schedule:run

✅ 正确:

/usr/bin/php /home/wwwroot/project/artisan schedule:run

四、Laravel / ThinkPHP 等框架定时任务

✅ Laravel(标准做法)

* * * * * /usr/bin/php /home/wwwroot/laravel/artisan schedule:run >> /dev/null 2>&1

✅ ThinkPHP

0 1 * * * /usr/bin/php /home/wwwroot/tp/think cron

五、查看定时任务日志(排错)

1️⃣ 查看 cron 日志

tail -f /var/log/cron

2️⃣ 手动测试 PHP 脚本

php /home/wwwroot/your_project/cron.php

六、总结(LNMP 定时任务最佳实践)

✅ 推荐方案

  • 使用 crontab
  • 使用 PHP CLI
  • 使用绝对路径
  • 日志重定向

✅ 示例模板

0 2 * * * /usr/bin/php /home/wwwroot/site/cron.php >> /home/wwwroot/site/cron.log 2>&1

如果你愿意,可以告诉我:

  • 你用的是 什么系统(CentOS / Ubuntu)
  • 使用的是 原生 PHP / Laravel / ThinkPHP
  • 具体想定时做什么

我可以帮你写 完全可用的 crontab 配置。

0 踩