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

                **一、項目根目錄創建訂單取消事件:** 創建成功后,在app目錄下會生成listener目錄以及OrderCancelTask.php ~~~ php think make:listener OrderCancelTask ~~~ ![](https://img.kancloud.cn/49/79/49792163d3e6fce3e96f11589df905f4_640x160.png) **二、在app/event.php中定義訂單取消事件:** ~~~ <?php // 事件定義文件 return [ 'bind' => [ ], 'listen' => [ 'AppInit' => [], 'HttpRun' => [], 'HttpEnd' => [], 'LogLevel' => [], 'LogWrite' => [], 'swoole.task' => [ app\listener\OrderCancelTask::class, ], ], 'subscribe' => [ ], ]; ~~~ **三、完善 OrderCancelTask.php 的邏輯代碼** ~~~ <?php declare (strict_types = 1); namespace app\listener; class OrderCancelTask { /** * 事件監聽處理 * * @return mixed */ public function handle($event) { var_dump($event->data); echo iconv('utf-8', 'gbk//IGNORE','下單成功時間:').time().PHP_EOL; //模擬1分鐘后取消訂單 //`Swoole\Timer::after`在指定的時間后執行函數,是一個一次性定時器,執行完成后就會銷毀。 \Swoole\Timer::after(60000, function (int $timer_id, $param) { //TODO 判斷訂單是否已經支付,如果未支付,取消訂單 echo iconv('utf-8', 'gbk//IGNORE','訂單編號:') .$param["orderSn"].iconv('utf-8', 'gbk//IGNORE','超時未支付,已取消').PHP_EOL; echo time().PHP_EOL; }, $event->data); return; } } ~~~ **四、完善Order.php 的邏輯代碼** ~~~ <?php // +---------------------------------------------------------------------- // | najing [ 通用后臺管理系統 ] // +---------------------------------------------------------------------- // | Copyright (c) 2020 http://www.najingquan.com All rights reserved. // +---------------------------------------------------------------------- // | Author: 救火隊隊長 // +---------------------------------------------------------------------- namespace app\controller; use app\BaseController; /** * 訂單管理 * Class Order * @package app\controller */ class Order extends BaseController { public function save() { //TODO 調用驗證類驗證數據 //TODO 將訂單信息插入數據庫 //異步模擬 $manager = app('\think\swoole\Manager'); $data = [ 'orderSn' => '202005260001', 'time' => time() ]; $manager->getServer()->task($data); return "下單成功!".time(); } } ~~~ 訪問下單的方法,測試一下是否可以正常取消: ![](https://img.kancloud.cn/11/b3/11b316402578e3ac23a281ae19a79e54_593x122.png) ![](https://img.kancloud.cn/f1/cc/f1cc95a93add6470b3945e216a5898e5_554x196.png)
                  <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>

                              哎呀哎呀视频在线观看