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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 消息隊列 ## 說明 將之前在定時任務和事件里面的眾多方法轉移消息隊列中,提升系統運行速度。 ## 文件目錄結構 ``` ├─crmeb CREMB核心類庫 │ ├─jobs 消息隊列 ``` ## Queue使用方式 ~~~ Queue::instance()->do('方法名稱')->job(類名稱::class)->secs('延遲時間(s)')->data(參數1,參數2,····)->push(); do(string $do) 設置任務執行方法,不調用默認執行doJob方法, job(string $job) 設置任務執行類名,必填,例: job(TestJob::class) errorCount(int $errorCount) 執行失敗次數,不調用默認3次 data(...$data) 執行數據,無參數可以不調用 secs(int $secs) 延遲執行秒數,不調用加入正常隊列,參數不為0加入延遲隊列,延遲$secs執行 ~~~ ## 子任務和單任務 ### 子任務 ~~~ 使用do方法時,傳入方法名稱,執行隊列時會執行該類中對應的方法, 例如模板消息隊列類,類中有眾多發送模板消息的方法,使用do方法調用某個方法執行。 ~~~ ~~~ return Queue::instance()->do('sendOrderTakeSuccess')->job(WechatTemplateJob::class)->data($openid, $order, $title)->push(); ~~~ ~~~ class WechatTemplateJob extends BaseJob { /** * 支付成功發送模板消息 * @param $order * @return bool */ public function sendOrderPaySuccess($openid, $order) { return $this->sendTemplate('ORDER_PAY_SUCCESS', $openid, [ 'first' => '親,您購買的商品已支付成功', 'keyword1' => $order['order_id'], 'keyword2' => $order['pay_price'], 'remark' => '點擊查看訂單詳情' ], sys_config('site_url') . Route::buildUrl('/pages/order_details/index?order_id=' . $order['order_id'])->suffix('')->domain(false)->build()); } /** * 確認收貨發送模板消息 * @param $order * @return bool|mixed */ public function sendOrderTakeSuccess($openid, $order, $title) { return $this->sendTemplate('ORDER_TAKE_SUCCESS', $openid, [ 'first' => '親,您的訂單已收貨', 'keyword1' => $order['order_id'], 'keyword2' => '已收貨', 'keyword3' => date('Y-m-d H:i:s', time()), 'keyword4' => $title, 'remark' => '感謝您的光臨!' ]); } } ~~~ ### 單任務 ~~~ 不使用do方法時,系統會自動調用類中的doJob執行隊列,該類只實現了一個功能 例如訂單未支付10分鐘后發送短信,類中只有一個doJob的方法,隊列執行時調用該方法執行。 ~~~ ~~~ Queue::instance()->job(UnpaidOrderSend::class)->secs(600)->data($orderId)->push(); ~~~ ~~~ /** * 未支付10分鐘后發送短信 * Class UnpaidOrderSend * @package crmeb\jobs */ class UnpaidOrderSend extends BaseJob { public function doJob($id) { /** @var StoreOrderServices $services */ $services = app()->make(StoreOrderServices::class); $orderInfo = $services->get($id); if (!$orderInfo) { return true; } if ($orderInfo->paid) { return true; } if ($orderInfo->is_del) { return true; } /** @var SmsSendServices $smsServices */ $smsServices = app()->make(SmsSendServices::class); $smsServices->send(true, $orderInfo['user_phone'], ['order_id' => $orderInfo['order_id']], 'ORDER_PAY_FALSE'); return true; } } ~~~ ## 延遲隊列 ~~~ 加入消息隊列時不調用secs方法,直接加入到隊列中,依次執行。 Queue::instance()->job(UnpaidOrderSend::class)->data($orderId)->push();//立即執行未付款發送短信 調用secs方法并傳入秒數時,隊列加入延遲隊列,多少秒后執行該隊列。 Queue::instance()->job(UnpaidOrderSend::class)->secs(600)->data($orderId)->push();//600秒后執行未付款發送短信 ~~~
                  <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>

                              哎呀哎呀视频在线观看