<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # think-queue ## 安裝 > composer require topthink/think-queue ## 配置 > 配置文件位于 `application/extra/queue.php` ### 公共配置 ``` [ 'connector'=>'sync' //驅動類型,可選擇 sync(默認):同步執行,database:數據庫驅動,redis:Redis驅動,topthink:Topthink驅動 //或其他自定義的完整的類名 ] ``` ### 驅動配置 > 各個驅動的具體可用配置項在`think\queue\connector`目錄下各個驅動類里的`options`屬性中,寫在上面的`queue`配置里即可覆蓋 ## 使用 Database > 創建如下數據表 ``` CREATE TABLE `prefix_jobs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `queue` varchar(255) NOT NULL, `payload` longtext NOT NULL, `attempts` tinyint(3) unsigned NOT NULL, `reserved` tinyint(3) unsigned NOT NULL, `reserved_at` int(10) unsigned DEFAULT NULL, `available_at` int(10) unsigned NOT NULL, `created_at` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` ## 創建任務類 > 單模塊項目推薦使用 `app\job` 作為任務類的命名空間 > 多模塊項目可用使用 `app\module\job` 作為任務類的命名空間 > 也可以放在任意可以自動加載到的地方 任務類不需繼承任何類,如果這個類只有一個任務,那么就只需要提供一個`fire`方法就可以了,如果有多個小任務,就寫多個方法,下面發布任務的時候會有區別 每個方法會傳入兩個參數 `think\queue\Job $job`(當前的任務對象) 和 `$data`(發布任務時自定義的數據) 還有個可選的任務失敗執行的方法 `failed` 傳入的參數為`$data`(發布任務時自定義的數據) ### 下面寫兩個例子 ``` namespace app\job; use think\queue\Job; class Job1{ public function fire(Job $job, $data){ //....這里執行具體的任務 if ($job->attempts() > 3) { //通過這個方法可以檢查這個任務已經重試了幾次了 } //如果任務執行成功后 記得刪除任務,不然這個任務會重復執行,直到達到最大重試次數后失敗后,執行failed方法 $job->delete(); // 也可以重新發布這個任務 $job->release($delay); //$delay為延遲時間 } public function failed($data){ // ...任務達到最大重試次數后,失敗了 } } ``` ``` namespace app\lib\job; use think\queue\Job; class Job2{ public function task1(Job $job, $data){ } public function task2(Job $job, $data){ } public function failed($data){ } } ``` ## 發布任務 > `think\Queue::push($job, $data = '', $queue = null)` 和 `think\Queue::later($delay, $job, $data = '', $queue = null)` 兩個方法,前者是立即執行,后者是在`$delay`秒后執行 `$job` 是任務名 單模塊的,且命名空間是`app\job`的,比如上面的例子一,寫`Job1`類名即可 多模塊的,且命名空間是`app\module\job`的,寫`model/Job1`即可 其他的需要些完整的類名,比如上面的例子二,需要寫完整的類名`app\lib\job\Job2` 如果一個任務類里有多個小任務的話,如上面的例子二,需要用@+方法名`app\lib\job\Job2@task1`、`app\lib\job\Job2@task2` `$data` 是你要傳到任務里的參數 `$queue` 隊列名,指定這個任務是在哪個隊列上執行,同下面監控隊列的時候指定的隊列名,可不填 ## 監聽任務并執行 > php think queue:listen > php think queue:work --daemon(不加--daemon為執行單個任務) 兩種,具體的可選參數可以輸入命令加 --help 查看 >可配合supervisor使用,保證進程常駐
                  <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>

                              哎呀哎呀视频在线观看