<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                <article><h1>Laravel 的任務調度(計劃任務)功能 Task Scheduling</h1><ul><li><a href="#introduction">簡介</a></li><li><a href="#defining-schedules">定義調度</a><ul><li><a href="#schedule-frequency-options">調度頻率設置</a></li><li><a href="#preventing-task-overlaps">避免任務重復</a></li><li><a href="#maintenance-mode">維護模式</a></li></ul></li><li><a href="#task-output">任務輸出</a></li><li><a href="#task-hooks">任務鉤子</a></li></ul><p><a name="introduction"></a></p><h2><a href="#introduction">簡介</a></h2><p>在過去,開發者必須為每個需要調度的任務生成單獨的 Cron 項目。然而令人頭疼的是任務調度不受版本控制,并且需要 SSH 到服務器上來增加 Cron 條目。</p><p>Laravel 命令調度器允許你在 Laravel 中對命令調度進行清晰流暢的定義,并且僅需要在服務器上增加一條 Cron 項目即可。你的調度已經定義在 <code class=" language-php">app<span class="token operator">/</span>Console<span class="token operator">/</span>Kernel<span class="token punctuation">.</span>php</code> 文件的 <code class=" language-php">schedule</code> 方法中。為了方便你開始,在該方法內包含了一個簡單的例子。你可以隨意增加調度到 <code class=" language-php">Schedule</code> 對象中。</p><h3>啟動調度器</h3><p>使用調度器時,你只需要把 Cron 添加到你的服務器,如果你不知道如何添加到服務器,你可以使用 <a href="https://forge.laravel.com">Laravel Forge</a> 服務來管理你的 Cron 。</p><pre class=" language-php"><code class=" language-php"><span class="token operator">*</span> <span class="token operator">*</span> <span class="token operator">*</span> <span class="token operator">*</span> <span class="token operator">*</span> php <span class="token operator">/</span>path<span class="token operator">/</span>to<span class="token operator">/</span>artisan schedule<span class="token punctuation">:</span>run <span class="token operator">&gt;</span><span class="token operator">&gt;</span> <span class="token operator">/</span>dev<span class="token operator">/</span><span class="token keyword">null</span> <span class="token number">2</span><span class="token operator">&gt;</span><span class="token operator">&amp;</span><span class="token number">1</span></code></pre><p>該 Cron 將于每分鐘調用一次 Laravel 命令調度器,當 <code class=" language-php">schedule<span class="token punctuation">:</span>run</code> 命令執行時, Laravel 會評估你的計劃任務并運行預定任務。</p><p><a name="defining-schedules"></a></p><h2><a href="#defining-schedules">定義調度</a></h2><p>你可以將所有的計劃任務定義在 <code class=" language-php">App\<span class="token package">Console<span class="token punctuation">\</span>Kernel</span></code> 類的 <code class=" language-php">schedule</code> 方法中。在開始之前,先讓我們來看看一個任務的調度示例。在該例子中,我們計劃了一個會在每天午夜被調用的 <code class=" language-php">閉包</code>。該 <code class=" language-php">閉包</code> 將運行數據庫查詢語句來清除某個數據表:</p><pre class=" language-php"><code class=" language-php"><span class="token delimiter">&lt;?php</span> <span class="token keyword">namespace</span> <span class="token package">App<span class="token punctuation">\</span>Console</span><span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">DB</span><span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Illuminate<span class="token punctuation">\</span>Console<span class="token punctuation">\</span>Scheduling<span class="token punctuation">\</span>Schedule</span><span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Illuminate<span class="token punctuation">\</span>Foundation<span class="token punctuation">\</span>Console<span class="token punctuation">\</span>Kernel</span> <span class="token keyword">as</span> ConsoleKernel<span class="token punctuation">;</span> <span class="token keyword">class</span> <span class="token class-name">Kernel</span> <span class="token keyword">extends</span> <span class="token class-name">ConsoleKernel</span> <span class="token punctuation">{</span> <span class="token comment" spellcheck="true">/** * 應用提供的 Artisan 命令 * * @var array */</span> <span class="token keyword">protected</span> <span class="token variable">$commands</span> <span class="token operator">=</span> <span class="token punctuation">[</span> \<span class="token scope">App<span class="token punctuation">\</span>Console<span class="token punctuation">\</span>Commands<span class="token punctuation">\</span>Inspire<span class="token punctuation">::</span></span><span class="token keyword">class</span><span class="token punctuation">,</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">/** * 定義應用的命令調度 * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */</span> <span class="token keyword">protected</span> <span class="token keyword">function</span> <span class="token function">schedule<span class="token punctuation">(</span></span>Schedule <span class="token variable">$schedule</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">call<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token scope">DB<span class="token punctuation">::</span></span><span class="token function">table<span class="token punctuation">(</span></span><span class="token string">'recent_users'</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">delete<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">daily<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span></code></pre><p>除了計劃 <code class=" language-php">閉包</code> 調用,你還能計劃 <a href="/docs/5.4/artisan">Artisan 命令</a>以及系統命令操作。舉個例子,你可以使用 <code class=" language-php">command</code> 方法傳參命令名稱或者命令類名稱來計劃一個 <code class=" language-php">Artisan</code> 命令:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">command<span class="token punctuation">(</span></span><span class="token string">'emails:send --force'</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">daily<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">command<span class="token punctuation">(</span></span><span class="token scope">EmailsCommand<span class="token punctuation">::</span></span><span class="token keyword">class</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">'--force'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">daily<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p><code class=" language-php">exec</code> 命令可發送命令到操作系統上:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">exec<span class="token punctuation">(</span></span><span class="token string">'node /home/forge/script.js'</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">daily<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p><a name="schedule-frequency-options"></a></p><h3>調度頻率設置</h3><p>當然,你可以針對你的任務來分配多種調度計劃:</p><table><thead><tr><th>方法</th><th>描述</th></tr></thead><tbody><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">cron<span class="token punctuation">(</span></span><span class="token string">'* * * * * *'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>自定義調度任務</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">everyMinute<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>&nbsp;每分鐘執行一次任務</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">everyFiveMinutes<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>每五分鐘執行一次任務</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">everyTenMinutes<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>每十分鐘執行一次任務</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">everyThirtyMinutes<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>每半小時執行一次任務</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">hourly<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>每小時執行一次任務</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">hourlyAt<span class="token punctuation">(</span></span><span class="token number">17</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>每一個小時的第 17 分鐘運行一次</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">daily<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>每到午夜執行一次任務</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">dailyAt<span class="token punctuation">(</span></span><span class="token string">'13:00'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>每天的 13:00 執行一次任務</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">twiceDaily<span class="token punctuation">(</span></span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">13</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>每天的 1:00 和 13:00 分別執行一次任務</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">weekly<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>每周執行一次任務</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">monthly<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>每月執行一次任務</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">monthlyOn<span class="token punctuation">(</span></span><span class="token number">4</span><span class="token punctuation">,</span> <span class="token string">'15:00'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>在每個月的第四天的 15:00 執行一次任務</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">quarterly<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>每季度執行一次任務</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">yearly<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>每年執行一次任務</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">timezone<span class="token punctuation">(</span></span><span class="token string">'America/New_York'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>設置時區</td></tr></tbody></table><p>這些方法可以合并其它限制條件以生成更精確的調度。例如在某周的某幾天運行調度。舉個例子,計劃一個每周周一的調度:</p><pre class=" language-php"><code class=" language-php"><span class="token comment" spellcheck="true">// 每周一的下午一點鐘運行 </span><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">call<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment" spellcheck="true"> // </span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">weekly<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">mondays<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">at<span class="token punctuation">(</span></span><span class="token string">'13:00'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true"> // 工作日中從早上 8 點鐘運行到下午 5 點 </span><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">command<span class="token punctuation">(</span></span><span class="token string">'foo'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">weekdays<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">hourly<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">timezone<span class="token punctuation">(</span></span><span class="token string">'America/Chicago'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">between<span class="token punctuation">(</span></span><span class="token string">'8:00'</span><span class="token punctuation">,</span> <span class="token string">'17:00'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>下方列出其它額外限制條件:</p><table><thead><tr><th>方法</th><th>描述</th></tr></thead><tbody><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">weekdays<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>限制任務在工作日</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">sundays<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>限制任務在星期日</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">mondays<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>限制任務在星期一</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">tuesdays<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>限制任務在星期二</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">wednesdays<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>限制任務在星期三</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">thursdays<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>限制任務在星期四</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">fridays<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>限制任務在星期五</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">saturdays<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>限制任務在星期六</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">between<span class="token punctuation">(</span></span><span class="token variable">$start</span><span class="token punctuation">,</span> <span class="token variable">$end</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>限制任務運行在開始到結束時間范圍內</td></tr><tr><td><code class=" language-php"><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">when<span class="token punctuation">(</span></span>Closure<span class="token punctuation">)</span><span class="token punctuation">;</span></code></td><td>限制任務基于一個為真的驗證</td></tr></tbody></table><h4>時間范圍限制</h4><p><code class=" language-php">between</code> 方法可以用來限制一天中某個時間范圍內:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">command<span class="token punctuation">(</span></span><span class="token string">'reminders:send'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">hourly<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">between<span class="token punctuation">(</span></span><span class="token string">'7:00'</span><span class="token punctuation">,</span> <span class="token string">'22:00'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>類似的,<code class=" language-php">unlessBetween</code> 方法可以用來排除時間段:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">command<span class="token punctuation">(</span></span><span class="token string">'reminders:send'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">hourly<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">unlessBetween<span class="token punctuation">(</span></span><span class="token string">'23:00'</span><span class="token punctuation">,</span> <span class="token string">'4:00'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><h4>為真驗證限制條件</h4><p><code class=" language-php">when</code> 方法可以用來判斷是否要運行任務,主要基于一個指定的為真驗證的運行結果。如果指定的 <code class=" language-php">閉包</code> 返回 <code class=" language-php"><span class="token boolean">true</span></code>,且沒有其它限制條件存在,那么這個任務將會被繼續運行。</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">command<span class="token punctuation">(</span></span><span class="token string">'emails:send'</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">daily<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">when<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p><code class=" language-php">skip</code> 是 <code class=" language-php">when</code> 的顛倒意味。<code class=" language-php">skip</code> 方法返回 <code class=" language-php"><span class="token boolean">true</span></code> 的話,計劃就不會運行。</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">command<span class="token punctuation">(</span></span><span class="token string">'emails:send'</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">daily<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">skip<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>當鏈式調用了 <code class=" language-php">when</code> 方法時,計劃命令只有在所有的 <code class=" language-php">when</code> 條件返回 <code class=" language-php"><span class="token boolean">true</span></code> 時才運行。</p><p><a name="preventing-task-overlaps"></a></p><h3>避免任務重復</h3><p>默認情況,即便之前相同的任務主體仍未結束,現有計劃任務依舊會被運行。為了避免這個問題,你可以使用 <code class=" language-php">withoutOverlapping</code> 方法:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">command<span class="token punctuation">(</span></span><span class="token string">'emails:send'</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">withoutOverlapping<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>在這個例子中,如果沒有其它 <code class=" language-php">emails<span class="token punctuation">:</span>send</code> <a href="/docs/5.4/artisan">Artisan 命令</a> 在運行的話,此任務將于每分鐘被運行一次。當你有些任務運行時間過長,且無法預測出具體所需時間時, <code class=" language-php">withoutOverlapping</code> 方法將會特別有幫助。</p><p><a name="maintenance-mode"></a></p><h3>維護模式</h3><p>當應用進入 <a href="/docs/5.4/configuration#maintenance-mode">維護模式</a> 時,默認情況下 Laravel 的調度功能將會停止運行。這是因為我們考慮到你可能在維護模式下做一些破壞性的維護工作,我們不想讓任務調度對這些工作造成干擾。然而,如果你想強制某個任務在維護模式下運行的話,你可以使用 <code class=" language-php">evenInMaintenanceMode</code> 方法:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">command<span class="token punctuation">(</span></span><span class="token string">'emails:send'</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">evenInMaintenanceMode<span class="token punctuation">(</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p><a name="task-output"></a></p><h2><a href="#task-output">任務輸出</a></h2><p>Laravel 調度器為任務調度輸出提供多種便捷方法。首先,通過 <code class=" language-php">sendOutputTo</code> 你可以發送輸出到單個文件上以便后續檢查:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">command<span class="token punctuation">(</span></span><span class="token string">'emails:send'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">daily<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">sendOutputTo<span class="token punctuation">(</span></span><span class="token variable">$filePath</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>如果想將輸出附加到指定的文件上,則可以使用 <code class=" language-php">appendOutputTo</code> 方法:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">command<span class="token punctuation">(</span></span><span class="token string">'emails:send'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">daily<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">appendOutputTo<span class="token punctuation">(</span></span><span class="token variable">$filePath</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>通過 <code class=" language-php">emailOutputTo</code> 方法,你可以發送輸出到你所指定的電子郵件上。注意,你必須先通過 <code class=" language-php">sendOutputTo</code> 方法將其輸出到一個文件。同時,在郵件發出之前,你需要先設置 Laravel 的 <a href="/docs/5.4/mail">電子郵件服務</a>:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">command<span class="token punctuation">(</span></span><span class="token string">'foo'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">daily<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">sendOutputTo<span class="token punctuation">(</span></span><span class="token variable">$filePath</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">emailOutputTo<span class="token punctuation">(</span></span><span class="token string">'foo@example.com'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><blockquote class="has-icon note"><p><div class="flag"><span class="svg"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" version="1.1" x="0px" y="0px" width="90px" height="90px" viewBox="0 0 90 90" enable-background="new 0 0 90 90" xml:space="preserve"><path fill="#FFFFFF" d="M45 0C20.1 0 0 20.1 0 45s20.1 45 45 45 45-20.1 45-45S69.9 0 45 0zM45 74.5c-3.6 0-6.5-2.9-6.5-6.5s2.9-6.5 6.5-6.5 6.5 2.9 6.5 6.5S48.6 74.5 45 74.5zM52.1 23.9l-2.5 29.6c0 2.5-2.1 4.6-4.6 4.6 -2.5 0-4.6-2.1-4.6-4.6l-2.5-29.6c-0.1-0.4-0.1-0.7-0.1-1.1 0-4 3.2-7.2 7.2-7.2 4 0 7.2 3.2 7.2 7.2C52.2 23.1 52.2 23.5 52.1 23.9z"></path></svg></span></div> <code class=" language-php">emailOutputTo</code>,<code class=" language-php">sendOutputTo</code> 和 <code class=" language-php">appendOutputTo</code> 方法只適用于 <code class=" language-php">command</code>方法,不支持 <code class=" language-php">call</code> 方法。</p></blockquote><p><a name="task-hooks"></a></p><h2><a href="#task-hooks">任務鉤子</a></h2><p>通過 <code class=" language-php">before</code> 與 <code class=" language-php">after</code> 方法,你能讓特定的代碼在任務完成之前及之后運行:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">command<span class="token punctuation">(</span></span><span class="token string">'emails:send'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">daily<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">before<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment" spellcheck="true"> // Task is about to start... </span> <span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">after<span class="token punctuation">(</span></span><span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment" spellcheck="true"> // Task is complete... </span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><h4>Ping 網址</h4><p>通過 <code class=" language-php">pingBefore</code> 與 <code class=" language-php">thenPing</code> 方法,調度器能自動的在一個任務完成之前或之后 ping 一個指定的網址。該方法在你計劃的任務進行或完成時,可用來有效的通知一個外部服務,例如 <a href="https://envoyer.io">Laravel Envoyer</a>:</p><pre class=" language-php"><code class=" language-php"><span class="token variable">$schedule</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">command<span class="token punctuation">(</span></span><span class="token string">'emails:send'</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">daily<span class="token punctuation">(</span></span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">pingBefore<span class="token punctuation">(</span></span><span class="token variable">$url</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span><span class="token function">thenPing<span class="token punctuation">(</span></span><span class="token variable">$url</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre><p>使用 <code class=" language-php"><span class="token function">pingBefore<span class="token punctuation">(</span></span><span class="token variable">$url</span><span class="token punctuation">)</span></code> 或 <code class=" language-php"><span class="token function">thenPing<span class="token punctuation">(</span></span><span class="token variable">$url</span><span class="token punctuation">)</span></code> 功能需要 Guzzle HTTP 函數庫的支持。可在 <code class=" language-php">composer<span class="token punctuation">.</span>json</code> 文件中加入以下代碼來安裝 Guzzle:</p><pre class=" language-php"><code class=" language-php">composer <span class="token keyword">require</span> guzzlehttp<span class="token operator">/</span>guzzle</code></pre></article>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看