PHP任务调度器:无需crond的类cron任务

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 PHP 任务调度器?

任务调度器(Job Scheduler)是一个 PHP 库,它允许直接从应用程序代码中执行周期性任务(cron 任务),而无需依赖系统 crond。它特别适用于对 crontab 访问受限的共享主机环境或容器化环境(Docker)。

为什么需要任务调度器?

  • 自主性 — 所有周期性规则都存储在 PHP 代码中,而不是系统配置文件中。
  • 灵活性 — 可以动态更改计划、暂停任务、记录执行情况。
  • 集成性 — 易于集成到框架(Laravel、Symfony)和 ORM 中。

安装

通过 Composer 安装:

composer require dragonmantank/cron-expression

这是一个用于处理 cron 表达式的基础库。要使用完整功能的任务调度器,常会用到 peppeocchi/php-cron-scheduler:

composer require peppeocchi/php-cron-scheduler

主要功能

  • 解析 cron 表达式 — 检查当前时间是否匹配模板(* * * * *)。
  • 多任务处理 — 在单个进程中启动多个任务。
  • 并行处理 — 通过 exec() 或 pcntl_fork() 实现。
  • 日志记录 — 将 stdout/stderr 输出到文件。
  • 错误处理 — 重试机制、通知功能。

代码示例

<?phprequire 'vendor/autoload.php';

use GO\\Scheduler;

$scheduler = new Scheduler();

// 任务:每分钟执行$scheduler->call(function() { echo "执行于 " . date('Y-m-d H:i:s') . "";})->everyMinute();

// 任务:每小时的第30分钟执行$scheduler->call('cleanup_logs')->at('30 * * * *');

// 任务:工作日每天早上9:00执行$scheduler->exec('php artisan report:generate')->at('0 9 * * 1-5');

// 启动所有就绪的任务$scheduler->run();

何时使用

PHP 任务调度器非常适用于:

  • 按计划发送电子邮件群发;
  • 清理过期数据(日志、会话);
  • 在非高峰时段生成报告;
  • 与外部 API 同步(每小时一次);
  • 更新缓存(每5分钟一次)。

不要用它来替代关键系统操作(如数据库备份、证书更新)所需的系统级 cron——应将其用作业务逻辑的附加层。

推荐