<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 推送一個工作至隊列 應用程序中能夠放進隊列的工作都存放在 App\Commands 目錄下,你可以借由下面 Artisan 命令產生一個可使用隊列的命令: `php artisan make:command SendEmail --queued` 要推送一個新的工作至隊列,請使用 Queue::push 方法: ~~~ Queue::push(new SendEmail($message)); ~~~ > 注意: 在這個例子當中,我們直接使用 Queue Facade,然而,常見的作法是借由 Command Bus 去分派隊列命令。我們將會在這篇文章中繼續使用 Queue Facade,不過,也要熟悉使用 command bus,因為它能夠同時分派你的網站應用程序中隊列與同步的命令。 默認情況下,make:command Artisan 命令會產生一個 "self-handling" 的命令,意味著命令里會包含一個 handle 方法。這個方法將會在隊列執行時被調用。你可以在 handle 方法使用時提示傳入任何你需要的依賴,而 服務容器 會自動注入他們: ~~~ public function handle(UserRepository $users) { // } ~~~ 如果你希望你的命令有獨立的處理類別,你可以在使用 make:command 命令時加上 --handler 標識。 `php artisan make:command SendEmail --queued --handler` 這個被產生出來的處理類別將會放在 App\Handlers\Commands 目錄下面,并且服務容器會自動解析。 ## 指定隊列使用特定連接 你也可指定隊列工作送至指定的連接: `Queue::pushOn('emails', new SendEmail($message));` ## 發送相同的數據去多個隊列工作 如果你需要發送一樣的數據去幾個不同的隊列工作,你可以使用 Queue::bulk 方法: `Queue::bulk([new SendEmail($message), new AnotherCommand]);` ## 延遲執行一個工作 有時候你可能想要延遲執行一個隊列工作,舉例來說你希望一個隊列工作在客戶注冊 15 分鐘后才寄送 e-mail,你可以使用 Queue::later 方法來完成這件事情: ~~~ $date = Carbon::now()->addMinutes(15); Queue::later($date, new SendEmail($message)); ~~~ 在這個例子中,我們使用 Carbon 日期類庫來指定我們希望隊列工作希望延遲的時間,另外你也可發送一個整數來設置你希望延遲的秒數。 > 注意: 在 Amazon SQS 服務中,有最大 900 秒( 15 分鐘 )的限制。 ## 將 Eloquent 模型放進隊列 如果你隊列工作的構造器接收一個 Eloquent 模型,只有這個模型的標記( identifier ) 會被序列化后放到隊列中。當工作真正開始被處理的時候,隊列系統會自動從數據庫中重新取得完整的模型實例。這個對你的網站應用程序來說是完全透明的,并且預防一些在序列化完整 Eloquent 模型實例時可能遇到的問題。 ## 刪除一個處理中的工作 一旦一個工作被處理過后,這個工作必須從隊列中刪除。假如在工作執行后沒有發生錯誤,這個將會自動完成。 如果你希望能夠手動刪除或著釋放工作,在 Illuminate\Queue\InteractsWithQueue trait 中提供 release 以及 delete 方法的接口。其中 release 方法接受單一一個值:你想要等待工作再次能夠執行的秒數。 ~~~ public function handle(SendEmail $command) { if (true) { $this->release(30); } } ~~~ ## 釋放一個工作回到隊列中 假如在工作執行后發生錯誤,這個工作將會自動被釋放回到隊列之中,如此一來便能夠再次嘗試執行工作。工作會一直被釋放回隊列直到到達應用程序的嘗試上限。這個上限數值可以在使用 queue:listen 或 queue:work Artisan 命令時候借由 --tries 開關來設置。 ## 檢查工作執行次數 當一個工作執行后發生錯誤,這個工作將會自動的釋放回隊列當中,你可以透過 attempts 方法來檢查這個工作已經被執行的次數: ~~~ if ($this->attempts() > 3) { // } ~~~ > 注意: 你的命令處理類別必須使用 Illuminate\Queue\InteractsWithQueue 這個 trait 才能夠使用這個方法。
                  <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>

                              哎呀哎呀视频在线观看