99久久国产露脸精品麻豆,欧美日韩精品小说,亚洲免费在线美女视频,国产三级中文字幕,91极品国产情侣高潮对白,国产亚洲一区二区三区不卡片,欧美jizz精品欧美性,久久国产精品久久国产片

YzmCMS隊列:后臺處理任務的強大工具

袁志蒙 1420次瀏覽

摘要:YzmCMS支持隊列功能了,它是一個用于處理耗時任務的強大工具。通過將任務推送到隊列中,應用程序可以異步執行這些任務,從而釋放主線程并提高性能。本文將介紹YzmCMS隊列的基本概念、配置、創建任務...

在開發Web應用程序時,我們經常遇到需要執行耗時操作的情況,例如發送電子郵件、大文件導出、生成報告或進行大量數據處理。如果這些操作在用戶請求時立即執行,將會嚴重影響應用程序的性能和用戶體驗。為了解決這個問題,經過多日來的研發,YzmCMS終于開發出了 隊列 這一功能強大的工具。

隊列的基本概念

隊列是一種將任務組織成隊列以按順序處理的技術。在YzmCMS中,這些任務被表示為類,通過將任務推送到隊列中,我們可以將耗時的操作放到后臺處理,而不會阻塞用戶的請求。

YzmCMS隊列的使用方法:

一、配置隊列

要使用YzmCMS隊列,首先需保證 YzmCMS版本為V7.1及以上版本,然后配置隊列驅動類型。YzmCMS目前支持 database 和 redis 兩種驅動類型。在/common/config/config.php文件中,您可以根據需求指定要使用的隊列參數。

//隊列配置
'queue_connection'   => 'database',      //隊列驅動類型,支持 database 和 redis
'queue_name'      => 'default',       //隊列名稱

二、創建表

如果是 database 類型,則必須創建,如果是redis類型,可不創建,但也推薦創建,因為當隊列執行失敗時,YzmCMS會把執行失敗的隊列信息存入到數據庫表中,方便查看日志及再次執行。

php yzm queue table

三、創建隊列任務

每個隊列任務都是一個類。您可以使用 php yzm make job 命令生成一個新的隊列任務類。例如,要創建一個發送電子郵件的隊列任務,可以運行以下命令:

php yzm make job sendemail_job

這將在 /jobs 目錄下創建一個名為 sendemail_job.class.php 的新文件。在這個文件中,您需要在 handle 方法中定義任務的邏輯,例如:

<?php
defined('IN_YZMPHP') or exit('Access Denied'); 

class sendemail_job{

    private $params;

    public function __construct($params = []) {
        $this->params = $params;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle() {
        $email = new SampleEmail($this->params);  
        Mail::to($this->params['email'])->send($email);  
    }
}

四、啟動隊列監聽器

php yzm queue work

YzmCMS隊列:后臺處理任務的強大工具

五、將一個任務添加到隊列中

要執行隊列任務,需要將其推送到隊列中。您可以使用 dispatch 方法將任務推送到隊列中。例如:

/**
 * 下發任務
 * @param  string $job    隊列任務類名稱
 * @param  array  $params 傳入的參數,可選
 * @param  string $queue  隊列名稱,可選
 * @return string|false         任務id
 */
$res = dispatch('sendemail_job', ['email'=>'yzmcms@qq.com'], 'default');
P($res);

這將在后臺處理隊列任務,而不會阻塞您的應用程序。您可以在控制器、事件監聽器或其他適當的位置調用dispatch方法來推送任務。

六、YzmCMS隊列命令詳情

'php yzm queue work' => '啟動隊列工作',
                -queue=test,指定隊列名稱
                -sleep=5,指定連續的任務之間休眠的秒數
                -timeout=30,指定隊列任務可以運行的最大秒數
                -tries=1,指定隊列任務失敗之前可以嘗試的最大次數
                -once=1,只處理一個任務,當任務完成后,工作器將自動退出

'php yzm queue lists' => '查看隊列列表,-queue=test,查看指定隊列(可選)',
'php yzm queue restart' => '重啟隊列工作',
'php yzm queue failed' => '查看所有失敗的任務',
'php yzm queue retry' => '重試失敗任務,需指定一個任務ID(如 queue retry -id=xxxxx)',
'php yzm queue delete' => '刪除單個失敗任務,需指定一個任務ID(如 queue delete -id=xxxxx)',
'php yzm queue flush' => '刪除所有失敗任務',
'php yzm queue table' => '創建隊列表',


隨機內容

表情

共4條評論
  • 網友評論:

    一直堅持,強大

    2024-08-01 18:01:21 回復

    點擊加載
  • 網友評論:

    游客 : YZM7.1?我們版本還是7.0,沒有得到升級呀。 管理員:馬上就推送升級了

    2024-03-13 14:11:50 回復

    點擊加載
  • 網友評論:

    YZM7.1?我們版本還是7.0,沒有得到升級呀。

    2024-03-11 11:28:54 回復

    點擊加載
  • 網友評論:

    期待!很強

    2024-01-24 23:04:12 回復

    點擊加載