You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel如何创建每日固定时间执行调用sendMessage函数的定时任务

Laravel 实现每日定时调用 sendMessage 任务的方案

步骤1:创建自定义控制台命令

执行Artisan命令生成命令类:

php artisan make:command SendDailyTemplateMessage

生成的文件位于 app/Console/Commands/SendDailyTemplateMessage.php,修改文件内容如下:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
// 引入你定义sendMessage方法的类,比如如果在MessageController里就引入对应控制器
use App\Http\Controllers\MessageController;

class SendDailyTemplateMessage extends Command
{
    // 命令签名,后续调度用这个标识
    protected $signature = 'message:send-daily-template';

    // 命令描述
    protected $description = '每日定时发送模板消息';

    public function __construct()
    {
        parent::__construct();
    }

    // 命令执行逻辑
    public function handle()
    {
        // 实例化对应类调用sendMessage方法,建议提前把sendMessage抽成独立服务类更规范
        $messageService = new MessageController();
        $messageService->sendMessage();
        $this->info('模板消息发送任务执行完成');
    }
}

步骤2:注册定时调度规则

打开 app/Console/Kernel.php 文件,在 schedule 方法中添加调度规则:

protected function schedule(Schedule $schedule)
{
    // 示例:每天上午9点执行发送任务,可自行修改时间,支持时区设置
    $schedule->command('message:send-daily-template')
             ->dailyAt('09:00')
             ->timezone('Asia/Shanghai'); // 国内环境建议加上时区配置
}

步骤3:配置服务器Crontab入口

Laravel的调度器需要服务器定时触发入口才能运行,在你部署项目的Linux服务器中执行crontab -e,添加如下规则:

* * * * * cd /你的项目根目录绝对路径 && php artisan schedule:run >> /dev/null 2>&1

配置完成后保存即可生效,Laravel会自动按照你定义的规则每日触发任务。

可选优化建议

  • 把sendMessage逻辑从控制器中抽成独立的服务类,避免命令层直接依赖控制器,复用性和可维护性更高
  • 发送消息时如果用户量较大,建议将单条通知推送拆分为队列任务异步执行,避免任务超时
  • 可以在sendMessage中添加运行日志,方便后续排查发送失败等问题

内容的提问来源于stack exchange,提问作者Marcius Leandro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:54:02