补充缺失部分
相关信息:
- 类型:文档文章
- 文章: 任务调度
- 文档: 《Laravel 10 中文文档(10.x)》
此投稿状态为 标记为已读。
标题修改:
内容修改:
Old | New | Differences |
---|---|---|
88 | 88 | |
89 | 89 | // 分发任务到「heartbeats」队列及「sqs」连接... |
90 | 90 | $schedule->job(new Heartbeat, 'heartbeats', 'sqs')->everyFiveMinutes(); |
91 | ||
91 | <a name="scheduling-shell-commands"></a> | |
92 | ### Scheduling Shell Commands | |
93 | ||
94 | The `exec` method may be used to issue a command to the operating system: | |
95 | ||
96 | $schedule->exec('node /home/forge/script.js')->daily(); | |
97 | ||
98 | <a name="schedule-frequency-options"></a> | |
99 | ### 调度频率选项 | |
100 | ||
101 | 我们已经看到了几个如何设置任务在指定时间间隔运行的例子。不仅如此,你还有更多的任务调度频率可选: | |
102 | ||
103 | <div class="overflow-auto"> | |
104 | ||
105 | Method | Description | |
106 | ------------- | ------------- | |
107 | `->cron('* * * * *');` | 自定义 Cron 计划执行任务 | |
108 | `->everyMinute();` | 每分钟执行一次任务 | |
109 | `->everyTwoMinutes();` | 每两分钟执行一次任务 | |
110 | `->everyThreeMinutes();` | 每三分钟执行一次任务 | |
111 | `->everyFourMinutes();` | 每四分钟执行一次任务 | |
112 | `->everyFiveMinutes();` | 每五分钟执行一次任务 | |
113 | `->everyTenMinutes();` | 每十分钟执行一次任务 | |
114 | `->everyFifteenMinutes();` | 每十五分钟执行一次任务 | |
115 | `->everyThirtyMinutes();` | 每三十分钟执行一次任务 | |
116 | `->hourly();` | 每小时执行一次任务 | |
117 | `->hourlyAt(17);` | 每小时第十七分钟时执行一次任务 | |
118 | `->everyOddHour();` | 每奇数小时运行一次任务 | |
119 | `->everyTwoHours();` | 每两小时执行一次任务 | |
120 | `->everyThreeHours();` | 每三小时执行一次任务 | |
121 | `->everyFourHours();` | 每四小时执行一次任务 | |
122 | `->everySixHours();` | 每六小时执行一次任务 | |
123 | `->daily();` | 每天 00:00 执行一次任务 | |
124 | `->dailyAt('13:00');` | 每天 13:00 执行一次任务 | |
125 | `->twiceDaily(1, 13);` | 每天 01:00 和 13:00 各执行一次任务 | |
126 | `->twiceDailyAt(1, 13, 15);` | 每天 1:15 和 13:15 各执行一次任务 | |
127 | `->weekly();` | 每周日 00:00 执行一次任务 | |
128 | `->weeklyOn(1, '8:00');` | 每周一 08:00 执行一次任务 | |
129 | `->monthly();` | 每月第一天 00:00 执行一次任务 | |
130 | `->monthlyOn(4, '15:00');` | 每月第四天 15:00 执行一次任务 | |
131 | `->twiceMonthly(1, 16, '13:00');` | 每月第一天和第 十六天的 13:00 各执行一次任务 | |
132 | `->lastDayOfMonth('15:00');` | 每月最后一天 15:00 执行一次任务 | |
133 | `->quarterly();` | 每季度第一天 00:00 执行一次任务 | |
134 | `->quarterlyOn(4, '14:00');` | 每季度第四天 14:00 运行一次任务 | |
135 | `->yearly();` | 每年第一天 00:00 执行一次任务 | |
136 | `->yearlyOn(6, 1, '17:00');` | 每年六月第一天 17:00 执行一次任务 | |
137 | `->timezone('America/New_York');` | 为任务设置时区 | |
138 | ||
139 | </div> | |
92 | 140 | 这些方法与额外的约束条件相结合后,可用于创建在一周的特定时间运行甚至更精细的计划任务。例如,在每周一执行命令: |
93 | 141 | |
94 | 142 | // 在每周一 13:00 执行... | … | … |
205 | 253 | return 'America/Chicago'; |
206 | 254 | } |
207 | 255 | |
208 | > **注意** | |
256 | > **注意** | |
209 | 257 | > 请记住,有些时区会使用夏令时。当夏令时发生调整时,你的任务可能会执行两次,甚至根本不会执行。因此,我们建议尽可能避免使用时区来安排计划任务。 |
210 | 258 | |
211 | 259 | <a name="preventing-task-overlaps"></a> | … | … |
226 | 274 | <a name="running-tasks-on-one-server"></a> |
227 | 275 | ### 任务只运行在一台服务器上 |
228 | 276 | |
229 | > **注意** | |
277 | > **注意** | |
230 | 278 | > 要使用此功能,你的应用程序必须使用 `database`, `memcached`, `dynamodb`, 或 `redis` 缓存驱动程序作为应用程序的默认缓存驱动程序。此外,所有服务器必须和同一个中央缓存服务器通信。 |
231 | 279 | |
232 | 280 | 如果你的应用运行在多台服务器上,可能需要限制调度任务只在某台服务器上运行。 例如,假设你有一个每个星期五晚上生成新报告的调度任务,如果任务调度器运行在三台服务器上,调度任务会在三台服务器上运行并且生成三次报告,不够优雅! | … | … |
331 | 379 | ->daily() |
332 | 380 | ->emailOutputOnFailure('taylor@example.com'); |
333 | 381 | |
334 | > **注意** | |
382 | > **注意** | |
335 | 383 | > `emailOutputTo`, `emailOutputOnFailure`, `sendOutputTo` 和 `appendOutputTo` 是 `command` 和 `exec` 独有的方法。 |
336 | 384 | |
337 | 385 | <a name="task-hooks"></a> |