补齐翻译缺失

修改理由:
相关信息:
- 类型:文档文章
- 文章: 任务调度
- 文档: 《Laravel 11 中文文档(11.x)》
此投稿由 Trace92 在 8个月前 合并。
标题修改:
内容修改:
Old | New | Differences |
---|---|---|
1 | ||
2 | 1 | # 任务调度 |
3 | 2 | |
4 | 3 | - [简介](#introduction) | … | … |
40 | 39 | DB::table('recent_users')->delete(); |
41 | 40 | })->daily(); |
42 | 41 | |
43 | ||
44 | ||
42 | ||
43 | ||
45 | 44 | 除了使用闭包调度外,还可以调度 [invokable 对象](https://secure.php.net/manual/en/language.oop5.magic.php#object.invoke)。invokable 对象指的是包含 `__invoke` 方法的简单 PHP 类: |
46 | 45 | |
47 | 46 | Schedule::call(new DeleteRecentUsers)->daily(); | … | … |
83 | 82 | DB::table('recent_users')->delete(); |
84 | 83 | })->purpose('Delete recent users')->daily(); |
85 | 84 | |
86 | ||
87 | ||
85 | ||
86 | ||
88 | 87 | 如果你需要向闭包命令传递参数,可以将它们提提供给 `schedule` 方法: |
89 | 88 | |
90 | 89 | Artisan::command('emails:send {user} {--force}', function ($user) { | … | … |
164 | 163 | `->yearlyOn(6, 1, '17:00');` | 每年 6 月 1 日 17:00 运行一次任务 |
165 | 164 | `->timezone('America/New_York');` | 设置任务时区 |
166 | 165 | |
167 | ||
168 | ||
166 | ||
167 | ||
169 | 168 | 这些方法可以与其他约束结合使用,创建更加精细的调度,只在一周的某些特定日子运行。例如,你可以调度命令在每周一运行一次: |
170 | 169 | |
171 | 170 | use Illuminate\Support\Facades\Schedule; | … | … |
212 | 211 | ->hourly() |
213 | 212 | ->days([0, 3]); |
214 | 213 | |
215 | ||
216 | ||
214 | ||
215 | ||
217 | 216 | 不仅如此,你还可以使用 `Illuminate\Console\Scheduling\Schedule` 类中的常量来设置任务在指定日期运行: |
218 | 217 | |
219 | 218 | use Illuminate\Support\Facades; | … | … |
264 | 263 | ->daily() |
265 | 264 | ->environments(['staging', 'production']); |
266 | 265 | |
267 | ||
268 | ||
266 | ||
267 | ||
269 | 268 | <a name="timezones"></a> |
270 | 269 | ### 时区 |
271 | 270 | … | … |
301 | 300 | |
302 | 301 | Schedule::command('emails:send')->withoutOverlapping(10); |
303 | 302 | |
304 | ||
305 | ||
303 | ||
304 | ||
306 | 305 | 在幕后,withoutOverlapping 方法使用应用程序的 [cache](/docs/laravel/11.x/cache) 来获取锁。如果必要,你可以使用 `schedule:clear-cache` Artisan 命令清除这些缓存锁。通常只有在服务器出现意外问题导致任务卡住时才需要这样做。 |
307 | 306 | |
308 | 307 | <a name="running-tasks-on-one-server"></a> | … | … |
339 | 338 | ->onOneServer(); |
340 | 339 | ``` |
341 | 340 | |
342 | ||
343 | ||
341 | ||
342 | ||
344 | 343 | 同样,如果打算在一台服务器上运行计划闭包,则必须为其分配一个名称: |
345 | 344 | |
346 | 345 | ```php | … | … |
377 | 376 | |
378 | 377 | 现在,我们已经学会了如何定义计划任务,接下来让我们讨论如何真正在服务器上运行它们。`schedule:run` Artisan 命令将评估你的所有计划任务,并根据服务器的当前时间决定它们是否运行。 |
379 | 378 | |
380 | ||
381 | ||
379 | ||
380 | ||
382 | 381 | 因此,当使用 Laravel 的调度器时,我们只需要在服务器上添加一个单一的 cron 配置项,每分钟运行一次 `schedule:run` 命令。如果你不知道如何向服务器添加 cron 条目,请考虑使用诸如 [Laravel Forge](https://forge.laravel.com) 之类的服务来为你管理 cron 配置项: |
383 | 382 | |
384 | 383 | ```shell | … | … |
411 | 410 | |
412 | 411 | 由于在定义了小于一分钟的任务时,`schedule:run` 命令会在调用的整分钟内运行,因此有时可能需要在部署应用程序时中断该命令。否则,已在运行的 `schedule:run` 命令实例将继续使用你的应用程序先前部署的代码,直到当前分钟结束。 |
413 | 412 | |
414 | ||
415 | ||
413 | ||
414 | ||
416 | 415 | 为了中断正在进行的 `schedule:run` 调用,你可添加 `schedule:interrupt` 命令到应用程序的部署脚本中。该命令应在你的应用程序部署完成后调用: |
417 | 416 | |
418 | 417 | ```shell | … | … |
461 | 460 | > [!WARNING] |
462 | 461 | > `emailOutputTo` , `emailOutputOnFailure` , `sendOutputTo` 和 `appendOutputTo` 方法是 `command` 和 `exec` 方法所独有的。 |
463 | 462 | |
464 | ||
465 | ||
463 | ||
464 | ||
466 | 465 | <a name="task-hooks"></a> |
467 | 466 | ## 任务钩子 |
468 | 467 | … | … |
520 | 519 | ->pingBeforeIf($condition, $url) |
521 | 520 | ->thenPingIf($condition, $url); |
522 | 521 | |
523 | ||
524 | ||
522 | ||
523 | ||
525 | 524 | `pingOnSuccess` 和 `pingOnFailure` 方法可用于仅在任务成功或失败时 ping 给定的网址。失败表示预定的 Artisan 或系统命令以非零退出代码终止: |
526 | 525 | |
527 | 526 | Schedule::command('emails:send') | … | … |
530 | 529 | ->pingOnFailure($failureUrl); |
531 | 530 | |
532 | 531 | <a name="events"></a> |
533 | ## | |
532 | ## 事件 | |
534 | 533 | |
535 | 534 | Laravel 在调度过程中发送各种[事件](/docs/laravel/11.x/events)。你可以为以下事件[定义监听器](/docs/laravel/11.x/events): |
536 | 535 | … | … |
541 | 540 | `Illuminate\Console\Events\ScheduledBackgroundTaskFinished` | |
542 | 541 | `Illuminate\Console\Events\ScheduledTaskSkipped` | |
543 | 542 | `Illuminate\Console\Events\ScheduledTaskFailed` | |
543 | ||
544 | 544 | |
545 |