deMemory 1年前

修改理由:

人称统一,链接错误,删除多余空格

相关信息:


此投稿由 tomcath 1年前 合并。

标题修改:

+ 任务调度

内容修改:

红色背景 为原始内容

绿色背景 为新增或者修改的内容

OldNewDifferences
1  
21# 任务调度
32
43- [简介](#introduction)
 
5150       }
5251   }
5352
54  
55  
5653除了调用闭包这种方式来调度外,你还可以调用 [可调用对象](https://secure.php.net/manual/en/language.oop5.magic.php#object.invoke)。 可调用对象是简单的 PHP 类,包含一个 `__invoke` 方法:
5754
5855   $schedule->call(new DeleteRecentUsers)->daily();
 
9289   // 分发任务到「heartbeats」队列及「sqs」连接...
9390   $schedule->job(new Heartbeat, 'heartbeats', 'sqs')->everyFiveMinutes();
9491
95  
96  
9792这些方法与额外的约束条件相结合后,可用于创建在一周的特定时间运行甚至更精细的计划任务。例如,在每周一执行命令:
9893
9994   // 在每周一 13:00 执行...
 
140135                   ->hourly()
141136                   ->days([0, 3]);
142137
143  
144  
145138不仅如此,你还可以使用 `Illuminate\Console\Scheduling\Schedule` 类中的常量来设置任务在指定日期运行:
146139
147140   use Illuminate\Console\Scheduling\Schedule;
 
191184               ->daily()
192185               ->environments(['staging', 'production']);
193186
194  
195  
196187<a name="timezones"></a>
197188### 时区
198189
 
230221
231222   $schedule->command('emails:send')->withoutOverlapping(10);
232223
233  
234  
235224上面这种场景中,`withoutOverlapping` 方法使用应用程序的 [缓存](/docs/laravel/10.x/cachemd) 获取锁。如有必要,可以使用`schedule:clear cache` Artisan命令清除这些缓存锁。这通常只有在任务由于意外的服务器问题而卡住时才需要。
236225
237226<a name="running-tasks-on-one-server"></a>
 
266255           ->onOneServer();
267256```
268257
269  
270  
271258如果你使用闭包来定义单服务器作业,则必须为他们定义一个名字
272259
273260```php
 
277264   ->onOneServer();
278265```
279266
280   
281267<a name="background-tasks"></a>
282268### 后台任务
283269
 
308294* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
309295```
310296
311  
312  
313297<a name="running-the-scheduler-locally"></a>
314298## 本地运行调度程序
315299
 
364348                // 任务已经执行。。。
365349            });
366350
367 
368 
 351
 352
369353使用 `onSuccess` 和 `onFailure` 方法,你可以决定在调度任务成功或者失败运行代码。失败表示 Artisan 或系统命令以非零退出码终止:
370354
371355   $schedule->command('emails:send')
 
414398            ->pingOnSuccess($successUrl)
415399            ->pingOnFailure($failureUrl);
416400
417 
418 
 401
 402
419403所有 ping 方法都依赖 Guzzle HTTP 库。通常,Guzzle 已在所有新的 Laravel 项目中默认安装,不过,若意外将 Guzzle 删除,则可以使用 Composer 包管理器将 Guzzle 手动安装到项目中:
420404
421405```shell
 
425409<a name="events"></a>
426410## 事件
427411
428 如果需要,您可以监听调度程序调度的 [事件](/docs/laravel/10.x/events)。通常,事件侦听器映射将在您的应用程序的 `App\Providers\EventServiceProvider` 类中定义:
 412如果需要,你可以监听调度程序调度的 [事件](/docs/laravel/10.x/eventsmd)。通常,事件侦听器映射将在你的应用程序的 `App\Providers\EventServiceProvider` 类中定义:
429413
430414   /**
431415    * 应用的事件监听器映射
 
453437           'App\Listeners\LogScheduledTaskFailed',
454438       ],
455439   ];
 440  
456441
457