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

如何在Hostinger中配置Laravel定时任务以印度标准时间(IST)执行

Laravel定时任务调整为印度标准时间(IST)执行的解决方案

由于服务器采用UTC时区,要让Laravel定时任务按IST(Asia/Kolkata,UTC+5:30)执行,有两种可行方案:

方案一:全局设置应用时区(所有任务统一使用IST)

修改项目根目录下config/app.php文件中的时区配置:

'timezone' => 'Asia/Kolkata',

修改完成后,执行以下命令清除并缓存配置,确保生效:

php artisan config:cache

此方案会让整个应用的时区变为IST,若应用其他业务逻辑依赖UTC时区,不建议使用。

方案二:仅为定时任务指定时区(不影响应用全局时区)

直接在kernel.php的调度方法中,为所有任务统一设置时区,或为单个任务单独指定:

统一设置所有任务时区

修改schedule方法如下:

protected function schedule(Schedule $schedule)
{
    // 为所有定时任务设置时区为印度标准时间
    $schedule->timezone('Asia/Kolkata');

    $schedule->command('websockets:clean')->daily();
    // 切换店铺状态
    $schedule->command("store:toggle")->everyMinute();
    // 切换商品状态
    $schedule->command("product:toggle")->everyMinute();
    $schedule->command("driver:isbusy")->everyMinute();
    $schedule->command("tempdata:dump")->daily();
}

为单个任务指定时区

如果仅需部分任务使用IST,可给对应任务链式调用timezone方法:

protected function schedule(Schedule $schedule)
{
    // 仅该任务按IST的每日0点执行
    $schedule->command('websockets:clean')->daily()->timezone('Asia/Kolkata');
    // 切换店铺状态
    $schedule->command("store:toggle")->everyMinute();
    // 切换商品状态
    $schedule->command("product:toggle")->everyMinute();
    $schedule->command("driver:isbusy")->everyMinute();
    // 仅该任务按IST的每日0点执行
    $schedule->command("tempdata:dump")->daily()->timezone('Asia/Kolkata');
}

注意事项

  • Laravel的调度器依赖服务器上的每分钟Cron任务,确保Hostinger服务器上已正确配置Laravel调度器的Cron条目(通常是* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1)。
  • 修改代码后无需重启服务器,调度器会自动读取新的时区配置。

内容的提问来源于stack exchange,提问作者Vara Prasad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:53:32