中文在线一区二区_欧美在线综合_久久久久久综合_欧美一区二区三区视频_国产免费看_国产福利精品一区

words-match

words-match組件是基于字典樹(DFA)并利用UnixSock通訊和自定義進程實現(xiàn),開發(fā)本組件的目的是幫小伙伴們快速部署內(nèi)容檢測服務(wù)。

使用場景

  • 跟文字內(nèi)容相關(guān)的產(chǎn)品都有應(yīng)用場景。

  • 博客類的文章,評論的檢測

  • 聊天內(nèi)容的檢測

  • 對垃圾內(nèi)容的屏蔽

組件要求

None

安裝方法

composer require easyswoole/words-match

倉庫地址

easyswoole/words-match

基本使用

準(zhǔn)備詞庫

服務(wù)啟動的時候會一行一行將數(shù)據(jù)讀出來,每一行的第一列為敏感詞,其它列為附屬信息

php※是世界上※最好的語言
java
golang
程序員
代碼
邏輯

服務(wù)注冊

<?php

namespace EasySwoole\EasySwoole;

use EasySwoole\Component\Di;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;
use EasySwoole\WordsMatch\WMServer;

class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        date_default_timezone_set('Asia/Shanghai');

        Di::getInstance()->set(SysConst::HTTP_GLOBAL_ON_REQUEST, function (Request $request, Response $response): bool {
            // TODO: Implement onRequest() method.
            return true;
        });

        Di::getInstance()->set(SysConst::HTTP_GLOBAL_AFTER_REQUEST, function (Request $request, Response $response): void {
            // TODO: Implement onRequest() method.
        });
    }

    public static function mainServerCreate(EventRegister $register)
    {
        // 配置 words-match
        $wdConfig = new \EasySwoole\WordsMatch\Config();
        $wdConfig->setDict(__DIR__ . '/dictionary.txt'); // 配置 詞庫地址
        $wdConfig->setMaxMEM('1024M'); // 配置 每個進程最大占用內(nèi)存(M),默認(rèn)為 512 M
        $wdConfig->setTimeout(3.0); // 配置 內(nèi)容檢測超時時間。默認(rèn)為 3.0 s
        $wdConfig->setWorkerNum(3); // 配置 進程數(shù)
        // $wdConfig->setSockDIR(sys_get_temp_dir()); // (不建議修改)配置 socket 存放地址,默認(rèn)為 sys_get_temp_dir(),即 '/tmp'

        // 注冊服務(wù)
        WMServer::getInstance($wdConfig)->attachServer(ServerManager::getInstance()->getSwooleServer());
    }
}

客戶端使用

<?php

namespace App\HttpController;

use EasySwoole\Http\AbstractInterface\Controller;
use EasySwoole\WordsMatch\WMServer;

class Index extends Controller
{
    function detect()
    {
        // 需要檢測的內(nèi)容敏感詞
        $content = 'php是世界上最好的語言';
        // 檢測結(jié)果(返回 -1 表示檢測超時,匹配檢測到時返回檢測到的敏感詞內(nèi)容)
        $result = WMServer::getInstance()->detect($content, 3);
        var_dump($result);
        /**
         * 輸出結(jié)果:
         * array(1) {
            [0]=>
            object(EasySwoole\WordsMatch\Dictionary\DetectResult)#96 (5) {
            ["word"]=>
            string(30) "php是世界上最好的語言"
            ["location"]=>
            array(1) {
              [0]=>
              array(3) {
                ["word"]=>
                string(30) "php是世界上最好的語言"
                ["length"]=>
                int(12)
                ["location"]=>
                array(1) {
                  [0]=>
                  int(0)
                }
              }
            }
            ["count"]=>
            int(1)
            ["remark"]=>
            string(0) ""
            ["type"]=>
            int(1)
            }
         * }
         */
    }
}

壓測結(jié)果

對此組件分別進行1.5萬、13萬等級的詞庫測試,服務(wù)默認(rèn)開啟3個進程。

僅做參考,具體還以線上驗證

電腦配置

MacBook Air (13-inch, 2017)
處理器 1.8 GHz Intel Core i5
內(nèi)存 8 GB 1600 MHz DDR3

1.5萬詞

并發(fā)10總請求數(shù)100
10 100
Concurrency Level:      10
Time taken for tests:   0.067 seconds
Complete requests:      100
Failed requests:        0
Non-2xx responses:      100
Total transferred:      17300 bytes
HTML transferred:       2600 bytes
Requests per second:    1492.49 [#/sec] (mean)
Time per request:       6.700 [ms] (mean)
Time per request:       0.670 [ms] (mean, across all concurrent requests)
Transfer rate:          252.15 [Kbytes/sec] received
并發(fā)100總請求數(shù)1000
Concurrency Level:      100
Time taken for tests:   0.239 seconds
Complete requests:      1000
Failed requests:        0
Non-2xx responses:      1000
Total transferred:      173000 bytes
HTML transferred:       26000 bytes
Requests per second:    4189.17 [#/sec] (mean)
Time per request:       23.871 [ms] (mean)
Time per request:       0.239 [ms] (mean, across all concurrent requests)
Transfer rate:          707.74 [Kbytes/sec] received

13萬詞

并發(fā)10總請求數(shù)100
Concurrency Level:      10
Time taken for tests:   0.057 seconds
Complete requests:      100
Failed requests:        0
Non-2xx responses:      100
Total transferred:      17300 bytes
HTML transferred:       2600 bytes
Requests per second:    1751.71 [#/sec] (mean)
Time per request:       5.709 [ms] (mean)
Time per request:       0.571 [ms] (mean, across all concurrent requests)
Transfer rate:          295.94 [Kbytes/sec] received
并發(fā)100總請求數(shù)1000
Concurrency Level:      100
Time taken for tests:   0.225 seconds
Complete requests:      1000
Failed requests:        0
Non-2xx responses:      1000
Total transferred:      173000 bytes
HTML transferred:       26000 bytes
Requests per second:    4444.84 [#/sec] (mean)
Time per request:       22.498 [ms] (mean)
Time per request:       0.225 [ms] (mean, across all concurrent requests)
Transfer rate:          750.93 [Kbytes/sec] received
主站蜘蛛池模板: 欧美性猛交xxxx黑人猛交 | www.亚洲成人 | 伊人精品视频在线观看 | 欧美成人免费 | 日韩成人不卡 | 毛片久久久久久 | 色婷婷精品久久二区二区蜜臂av | 中文字幕欧美在线 | 综合久久99 | 欧美成人免费在线视频 | 午夜久久乐 | 国产精品日韩一区 | 黄色片地址 | 日本精品一区二区三区视频 | 99久久99久久久精品色圆 | 婷婷久久综合 | 日韩色综合 | 有码一区| 一区在线观看 | 一区二区三区高清 | 国产黄视频在线观看 | 国产在线观看91一区二区三区 | 精品蜜桃一区二区三区 | 国产99久久精品一区二区永久免费 | 在线免费观看av电影 | 日韩av免费在线观看 | 国产日韩欧美综合 | 亚洲欧美一级久久精品国产特黄 | 成人精品国产一区二区4080 | 日韩欧美视频 | 成人久久久 | 成人在线小视频 | 国产亚洲一区二区精品 | 欧美成人区 | 青青草成人在线 | 亚洲免费视频网站 | 一区二区中文字幕 | 亚洲高清在线视频 | 国产黄a三级三级看三级 | 亚洲欧美激情精品一区二区 | 美女视频一区二区三区 |