人称统一,链接错误,删除多余空格
修改理由:
相关信息:
- 类型:文档文章
- 文章: 任务调度
- 文档: 《Laravel 10 中文文档(10.x)》
此投稿由 tomcath 在 2年前 合并。
标题修改:
内容修改:
| Old | New | Differences |
|---|---|---|
| 1 | ||
| 2 | 1 | # 任务调度 |
| 3 | 2 | |
| 4 | 3 | - [简介](#introduction) | … | … |
| 51 | 50 | } |
| 52 | 51 | } |
| 53 | 52 | |
| 54 | ||
| 55 | ||
| 56 | 53 | 除了调用闭包这种方式来调度外,你还可以调用 [可调用对象](https://secure.php.net/manual/en/language.oop5.magic.php#object.invoke)。 可调用对象是简单的 PHP 类,包含一个 `__invoke` 方法: |
| 57 | 54 | |
| 58 | 55 | $schedule->call(new DeleteRecentUsers)->daily(); | … | … |
| 92 | 89 | // 分发任务到「heartbeats」队列及「sqs」连接... |
| 93 | 90 | $schedule->job(new Heartbeat, 'heartbeats', 'sqs')->everyFiveMinutes(); |
| 94 | 91 | |
| 95 | ||
| 96 | ||
| 97 | 92 | 这些方法与额外的约束条件相结合后,可用于创建在一周的特定时间运行甚至更精细的计划任务。例如,在每周一执行命令: |
| 98 | 93 | |
| 99 | 94 | // 在每周一 13:00 执行... | … | … |
| 140 | 135 | ->hourly() |
| 141 | 136 | ->days([0, 3]); |
| 142 | 137 | |
| 143 | ||
| 144 | ||
| 145 | 138 | 不仅如此,你还可以使用 `Illuminate\Console\Scheduling\Schedule` 类中的常量来设置任务在指定日期运行: |
| 146 | 139 | |
| 147 | 140 | use Illuminate\Console\Scheduling\Schedule; | … | … |
| 191 | 184 | ->daily() |
| 192 | 185 | ->environments(['staging', 'production']); |
| 193 | 186 | |
| 194 | ||
| 195 | ||
| 196 | 187 | <a name="timezones"></a> |
| 197 | 188 | ### 时区 |
| 198 | 189 | … | … |
| 230 | 221 | |
| 231 | 222 | $schedule->command('emails:send')->withoutOverlapping(10); |
| 232 | 223 | |
| 233 | ||
| 234 | ||
| 235 | 224 | 上面这种场景中,`withoutOverlapping` 方法使用应用程序的 [缓存](/docs/laravel/10.x/cachemd) 获取锁。如有必要,可以使用`schedule:clear cache` Artisan命令清除这些缓存锁。这通常只有在任务由于意外的服务器问题而卡住时才需要。 |
| 236 | 225 | |
| 237 | 226 | <a name="running-tasks-on-one-server"></a> | … | … |
| 266 | 255 | ->onOneServer(); |
| 267 | 256 | ``` |
| 268 | 257 | |
| 269 | ||
| 270 | ||
| 271 | 258 | 如果你使用闭包来定义单服务器作业,则必须为他们定义一个名字 |
| 272 | 259 | |
| 273 | 260 | ```php | … | … |
| 277 | 264 | ->onOneServer(); |
| 278 | 265 | ``` |
| 279 | 266 | |
| 280 | ||
| 281 | 267 | <a name="background-tasks"></a> |
| 282 | 268 | ### 后台任务 |
| 283 | 269 | … | … |
| 308 | 294 | * * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1 |
| 309 | 295 | ``` |
| 310 | 296 | |
| 311 | ||
| 312 | ||
| 313 | 297 | <a name="running-the-scheduler-locally"></a> |
| 314 | 298 | ## 本地运行调度程序 |
| 315 | 299 | … | … |
| 364 | 348 | // 任务已经执行。。。 |
| 365 | 349 | }); |
| 366 | 350 | |
| 367 | ||
| 368 | ||
| 351 | ||
| 352 | ||
| 369 | 353 | 使用 `onSuccess` 和 `onFailure` 方法,你可以决定在调度任务成功或者失败运行代码。失败表示 Artisan 或系统命令以非零退出码终止: |
| 370 | 354 | |
| 371 | 355 | $schedule->command('emails:send') | … | … |
| 414 | 398 | ->pingOnSuccess($successUrl) |
| 415 | 399 | ->pingOnFailure($failureUrl); |
| 416 | 400 | |
| 417 | ||
| 418 | ||
| 401 | ||
| 402 | ||
| 419 | 403 | 所有 ping 方法都依赖 Guzzle HTTP 库。通常,Guzzle 已在所有新的 Laravel 项目中默认安装,不过,若意外将 Guzzle 删除,则可以使用 Composer 包管理器将 Guzzle 手动安装到项目中: |
| 420 | 404 | |
| 421 | 405 | ```shell | … | … |
| 425 | 409 | <a name="events"></a> |
| 426 | 410 | ## 事件 |
| 427 | 411 | |
| 428 | 如果需要, | |
| 412 | 如果需要,你可以监听调度程序调度的 [事件](/docs/laravel/10.x/eventsmd)。通常,事件侦听器映射将在你的应用程序的 `App\Providers\EventServiceProvider` 类中定义: | |
| 429 | 413 | |
| 430 | 414 | /** |
| 431 | 415 | * 应用的事件监听器映射 | … | … |
| 453 | 437 | 'App\Listeners\LogScheduledTaskFailed', |
| 454 | 438 | ], |
| 455 | 439 | ]; |
| 440 | ||
| 456 | 441 | |
| 457 |
关于 LearnKu