Laravel の基本的なチュートリアル - タスクの計画
タスクのスケジュール
はじめに
以前は、開発者はスケジュールされたタスクを入力するために手動でスケジュールに行を追加する必要がありました。これらのことを行うにはリモート サーバーに手動でログインする必要があり、コードで効果的に制御できないため、これは非常にイライラします。 Laravel のコマンド スケジューラーを使用すると、Laravel でタスク スケジュールをスムーズに定義できます。これには、サーバーにスケジュールされたタスク エントリを個別に追加するだけで、コードの量でタスク スケジュールを制御できます。タスクのスケジュールは、app/Console/Kernel.php ファイルのスケジュール メソッドで定義されます。始める前に、簡単な例を見てみましょう。実行したいタスク スケジュールをスケジュール オブジェクトに追加できます。
プランの実行を開始します
サーバーの Cron 項目に次のエントリを追加するだけです:
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
タスクを定義する
AppConsoleKernel クラスのスケジュール メソッドですべてのタスク プランを定義できます。始める前に、タスク計画の簡単な例を見てみましょう。この例では、毎日午前 0 時にクロージャを実行します。 Closure では、クエリ ステートメントを実行してデータベース テーブルをクリアします。
<?phpnamespace App\Console;use DB;use Illuminate\Console\Scheduling\Schedule;use Illuminate\Foundation\Console\Kernel as ConsoleKernel;class Kernel extends ConsoleKernel{ /** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ \App\Console\Commands\Inspire::class, ]; /** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { $schedule->call(function () { DB::table('recent_users')->delete(); })->daily(); }}
$schedule->command('emails:send --force')->daily();
$schedule->exec('node /home/forge/script.js')->daily();
もちろん、実行できるさまざまなタスクがあります。割り当てられるスケジュール方法:
Description | |
---|---|
カスタマイズされた Cron タスク プランを実行する | |
1分ごとにタスクを実行する | |
5分ごとにタスクを実行する | |
10分ごとにタスクを実行する | |
1時間ごとにタスクを実行します | |
深夜に1回タスクを実行します | |
毎日13:00にタスクを実行します | |
毎日1:00と13:00にタスクを実行します | |
週に一度タスクを実行します | |
月に一度タスクを実行します | |
4日および毎月 15 日: 00 はタスクを実行します | & & & gt; 四半期ごと (); /New_York'); |
これらのメソッドを追加の制約と組み合わせて、より細かく調整されたスケジュールを作成できます。特定の曜日のみ実行するなど。毎週月曜日に実行するようにスケジュール コマンドをスケジュールしましょう: | rrree|
Method | |
->weekdays(); |
& & & gt; 日曜日 () ) >金曜日( );
金曜日限定
土曜日限定 | -> ) ; |
---|---|
真值约束 when 方法可以基于给定的真值测试的结果来约束一个任务的执行。换种说法就是,如果给定的 Closure 返回 true,那么只要其他约束并不阻止任务的执行时,该任务就会被执行: $schedule->command('emails:send')->daily()->when(function () { return true;}); ログイン後にコピー skip 方法刚好与 when 相反。如果 skip 方法返回 true,那么调度任务将不会执行: $schedule->command('emails:send')->daily()->skip(function () { return true; }); ログイン後にコピー 当链式调用 when 方法时,只有在所有的 when 约束返回 true 时才会执行调度任务命令。 避免任务重叠默认的,如果前一个任务还在进程中,计划任务还是会再次运行的。你可以使用 withoutOverlapping 方法来避免这个: $schedule->command('emails:send')->withoutOverlapping(); ログイン後にコピー 在这个例子中,emails:send Artisan 命令每分钟都会被调度,但是只有在进程中没有运行该命令时才会再次执行。withoutOverlapping 方法对于无法确定执行时间的任务特别有效,这样就可以避免同时执行越来越多的耗时任务增大服务器的压力。 任务输出Laravel 的任务计划提供了多种方便的方法来生成计划任务的输出。首先,你需要使用 sendOutputTo 方法,你可以传递一个文件路径到方法以便之后的检查: $schedule->command('emails:send') ->daily() ->sendOutputTo($filePath); ログイン後にコピー 如果希望追加内容到给定的文件,你应该使用 appendOutputTo 方法: $schedule->command('emails:send') ->daily() ->appendOutputTo($filePath); ログイン後にコピー 你可以使用 emailOutputTo 方法来将输出发送到你选定的邮箱地址中。但是你需要注意的是,你必须先使用 sendOutputTo 方法将输出发送到文件中。并且,在通过邮件发送任务的输出之前,你需要先配置好 laravel 的邮件服务: $schedule->command('foo') ->daily() ->sendOutputTo($filePath) ->emailOutputTo('foo@example.com') ログイン後にコピー
任务钩子你可以使用 before 和 after 方法来在任务计划执行或者完成时执行特定的操作: $schedule->command('emails:send') ->daily() ->before(function () { // Task is about to start... }) ->after(function () { // Task is complete... }); ログイン後にコピー Pingings URLs 使用 pingBefore 和 thenPing 方法,任务调度可以自动的在任务完成之前或者之后 ping 给定的 URL。这些方法通常用来通知外部的服务。比如 Laravel Envoyer,告知其计划任务将要执行或者已经完成: $schedule->command('emails:send') ->daily() ->pingBefore($url) ->thenPing($url); ログイン後にコピー 使用 pingBefore($url) 或者 thenPing($url) 方法都需要引入 Guzzle HTTP 类库。你可以通过 Composer 来进行安装: "guzzlehttp/guzzle": "~5.3|~6.0" ログイン後にコピー このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
![]() ホットAIツール![]() Undresser.AI Undressリアルなヌード写真を作成する AI 搭載アプリ ![]() AI Clothes Remover写真から衣服を削除するオンライン AI ツール。 ![]() Undress AI Tool脱衣画像を無料で ![]() Clothoff.ioAI衣類リムーバー ![]() AI Hentai GeneratorAIヘンタイを無料で生成します。 ![]() 人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1 か月前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最高のグラフィック設定
1 か月前
By 尊渡假赌尊渡假赌尊渡假赌
アサシンのクリードシャドウズ:シーシェルリドルソリューション
2週間前
By DDD
R.E.P.O.誰も聞こえない場合はオーディオを修正する方法
1 か月前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.チャットコマンドとそれらの使用方法
1 か月前
By 尊渡假赌尊渡假赌尊渡假赌
![]() ホットツール![]() メモ帳++7.3.1使いやすく無料のコードエディター ![]() SublimeText3 中国語版中国語版、とても使いやすい ![]() ゼンドスタジオ 13.0.1強力な PHP 統合開発環境 ![]() ドリームウィーバー CS6ビジュアル Web 開発ツール ![]() SublimeText3 Mac版神レベルのコード編集ソフト(SublimeText3) ![]() ホットトピック
Gmailメールのログイン入り口はどこですか?
![]() ![]()
CakePHP チュートリアル
![]() ![]()
Steamのアカウント名の形式は何ですか
![]() ![]()
NYTの接続はヒントと回答です
![]() ![]() ![]() JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。 ![]() 記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ ![]() 記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。 ![]() PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。 ![]() この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。 ![]() PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。 ![]() システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ... ![]() |