亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频

配置文件

EasySwoole 框架提供了非常靈活自由的全局配置功能,配置文件采用 PHP 返回數(shù)組方式定義,對于一些簡單的應(yīng)用,無需修改任何配置,對于復(fù)雜的要求,還可以自行擴展自己獨立的配置文件和進行動態(tài)配置。
框架安裝完成后系統(tǒng)默認的全局配置文件是項目根目錄下的 produce.php 、 dev.php 文件,(在 3.1.2 版本之前是 dev.env、produce.env),3.7.x 版本(最新版)支持在啟動 EasySwoole 框架時以指定的配置文件( dev.php / produce.php)運行,詳細啟動命令請看 基本管理命令章節(jié)

配置文件內(nèi)容如下:

<?php

return [
    // 服務(wù)名稱
    'SERVER_NAME'   => "EasySwoole",
    'MAIN_SERVER'   => [
        // 監(jiān)聽地址
        'LISTEN_ADDRESS' => '0.0.0.0',
        // 監(jiān)聽端口
        'PORT'           => 9501,
        // 可選 EASYSWOOLE_SERVER,EASYSWOOLE_WEB_SERVER EASYSWOOLE_WEB_SOCKET_SERVER
        'SERVER_TYPE'    => EASYSWOOLE_WEB_SERVER, 
        // 可選 SWOOLE_TCP SWOOLE_TCP6 SWOOLE_UDP SWOOLE_UDP6 SWOOLE_UNIX_DGRAM SWOOLE_UNIX_STREAM
        'SOCK_TYPE'      => SWOOLE_TCP,
        // 默認 Server 運行模式
        'RUN_MODEL'      => SWOOLE_PROCESS,
        // Swoole_Server 運行配置( 完整配置可見[Swoole 文檔](http://swoole.easyswoole.com/ServerStart/Tcp/method.html) 的 mode 參數(shù) )
        'SETTING'        => [
            // 運行的 worker 進程數(shù)量
            'worker_num'            => 8,
            // 設(shè)置異步重啟開關(guān)。設(shè)置為 true 時,將啟用異步安全重啟特性,Worker 進程會等待異步事件完成后再退出。
            'reload_async'          => true,
            // 開啟后自動在 onTask 回調(diào)中創(chuàng)建協(xié)程
            'task_enable_coroutine' => true,
            'max_wait_time'         => 3,
            // (可選參數(shù))使用 http 上傳大文件時可以進行配置
            // 'package_max_length' => 100 * 1024 * 1024, // 即 100 M

            // (可選參數(shù)) 允許處理靜態(tài)文件 html 等,詳細請看 http://swoole.easyswoole.com/ServerStart/Http/serverSetting.html
            // 'document_root' => '/easyswoole/public',
            // 'enable_static_handler' => true,
        ],
        // 設(shè)置 EasySwoole 框架獨立實現(xiàn)的 Task 任務(wù)組件的配置
        'TASK'=>[
            'workerNum'     => 4,
            'maxRunningNum' => 128,
            'timeout'       => 15
        ]
    ],
    // 臨時文件存放的目錄
    'TEMP_DIR'      => null,

    ### 日志相關(guān)配置 (目前最新)EasySwoole 3.4.4 及以后版本支持
    "LOG" => [
        // 設(shè)置記錄日志文件時日志文件存放目錄
        'dir' => null,
        // 設(shè)置記錄日志時的日志最低等級,低于此等級的日志不進行記錄和顯示
        'level' => \EasySwoole\Log\LoggerInterface::LOG_LEVEL_DEBUG,
        // 設(shè)置日志處理器 `handler` (handler)
        'handler' => null,
        // 設(shè)置開啟控制臺日志記錄到日志文件
        'logConsole' => true,
        // 設(shè)置開啟在控制臺顯示日志
        'displayConsole'=>true,
        // 設(shè)置打印日志時忽略哪些分類的日志不進行記錄
        'ignoreCategory' => []
    ],

    ### 日志相關(guān)配置 EasySwoole 3.4.3 版本支持
    // "LOG" => [
    //    'dir' => null,
    //    'level' => \EasySwoole\Log\LoggerInterface::LOG_LEVEL_DEBUG,
    //    'handler' => null,
    // ],

    ### 日志相關(guān)配置 EasySwoole 3.4.3 之前支持
    // 日志文件存放的目錄
    // 'LOG_DIR'       => null,
];

以上配置關(guān)于日志的相關(guān)配置的說明,詳細請看 日志 章節(jié)。

上述參數(shù)補充說明:

  • MAIN_SERVER.SERVER_TYPE:
    • EASYSWOOLE_WEB_SERVER: 表示框架主服務(wù)為 Http 服務(wù)(框架默認提供的服務(wù)類型)
    • EASYSWOOLE_SERVER: 表示框架主服務(wù)為 Tcp 服務(wù)
    • EASYSWOOLE_WEB_SOCKET_SERVER: 表示框架主服務(wù)為 WebSocket 服務(wù)

EASYSWOOLE_SERVER、EASYSWOOLE_WEB_SOCKET_SERVER類型,都需要在 EasySwooleEvent.phpmainServerCreate 事件中自行設(shè)置回調(diào)( receivemessage ),否則將出錯。具體設(shè)置對應(yīng)的回調(diào)的方式請參考 Tcp 服務(wù)章節(jié)WebSocket 服務(wù)章節(jié)。關(guān)于同時支持多個服務(wù)的使用也請查看 Tcp 服務(wù)章節(jié)WebSocket 服務(wù)章節(jié)。

注意:目前框架 3.7.x 的配置驅(qū)動默認為 SplArray,自定義配置驅(qū)動可查看本文最后章節(jié)。

注意:EasySwoole 3.7.x 之前版本的配置驅(qū)動使用的是 \Swoole\Table,由于 swoole_table 的特殊特性,不適合存儲大量/大長度的配置,如果是存儲支付秘鑰、簽名等大長度字符串,建議使用類常量方法定義,而不是通過 dev.php 存儲。如果你必須用配置文件存儲,請看本文下文的自定義 config 驅(qū)動。

配置操作類

配置操作類為 \EasySwoole\EasySwoole\Config 類,使用方式非常簡單,具體請看下面的代碼示例,操作類還提供了 load 方法重載全部配置,基于這個方法,可以自己定制更多的高級操作。

設(shè)置和獲取配置項都支持點語法分隔,具體請看下面獲取配置的代碼示例

<?php

$instance = \EasySwoole\EasySwoole\Config::getInstance();

// 獲取配置 按層級用點號分隔
$instance->getConf('MAIN_SERVER.SETTING.task_worker_num');

// 設(shè)置配置 按層級用點號分隔
$instance->setConf('DATABASE.host', 'localhost');

// 獲取全部配置
$conf = $instance->getConf();

// 用一個數(shù)組覆蓋當(dāng)前配置項
$conf['DATABASE'] = [
    'host' => '127.0.0.1',
    'port' => 13306
];
$instance->load($conf);

需要注意的是 由于進程隔離的原因,在 Server 啟動后,動態(tài)新增修改的配置項,只對執(zhí)行操作的進程生效,如果需要全局共享配置需要自己進行擴展

添加用戶配置項

每個用戶都有自己的配置項,添加自己的配置項非常簡單,其中一種方法是直接在配置文件中添加即可,如下面的例子: 下面示例中添加了自定義的 MySQLRedis 配置。

<?php
return [
    'SERVER_NAME' => "EasySwoole",
    'MAIN_SERVER' => [
        'LISTEN_ADDRESS' => '0.0.0.0',
        'PORT' => 9501,
        'SERVER_TYPE' => EASYSWOOLE_WEB_SERVER, // 可選為 EASYSWOOLE_SERVER  EASYSWOOLE_WEB_SERVER EASYSWOOLE_WEB_SOCKET_SERVER
        'SOCK_TYPE' => SWOOLE_TCP,
        'RUN_MODEL' => SWOOLE_PROCESS,
        'SETTING' => [
            'worker_num' => 8,
            'reload_async' => true,
            'max_wait_time'=>3,
            'document_root'            => EASYSWOOLE_ROOT . '/Static',
            'enable_static_handler'    => true,
        ],
        'TASK'=>[
            'workerNum'=>0,
            'maxRunningNum'=>128,
            'timeout'=>15
        ]
    ],
    'TEMP_DIR' => null,
    'LOG_DIR' => null,

    // 添加 MySQL 及對應(yīng)的連接池配置
    /*################ MYSQL CONFIG ##################*/
    'MYSQL' => [
        'host'          => '127.0.0.1', // 數(shù)據(jù)庫地址
        'port'          => 3306, // 數(shù)據(jù)庫端口
        'user'          => 'root', // 數(shù)據(jù)庫用戶名
        'password'      => 'root', // 數(shù)據(jù)庫用戶密碼
        'timeout'       => 45, // 數(shù)據(jù)庫連接超時時間
        'charset'       => 'utf8', // 數(shù)據(jù)庫字符編碼
        'database'      => 'easyswoole', // 數(shù)據(jù)庫名
        'autoPing'      => 5, // 自動 ping 客戶端鏈接的間隔
        'strict_type'   => false, // 不開啟嚴格模式
        'fetch_mode'    => false,
        'returnCollection'  => false, // 設(shè)置返回結(jié)果為 數(shù)組
        // 配置 數(shù)據(jù)庫 連接池配置,配置詳細說明請看連接池組件 http://www.b3f21.cn/Components/Pool/introduction.html
        'intervalCheckTime' => 15 * 1000, // 設(shè)置 連接池定時器執(zhí)行頻率
        'maxIdleTime'   => 10, // 設(shè)置 連接池對象最大閑置時間 (秒)
        'maxObjectNum'  => 20, // 設(shè)置 連接池最大數(shù)量
        'minObjectNum'  => 5, // 設(shè)置 連接池最小數(shù)量
        'getObjectTimeout'  => 3.0, // 設(shè)置 獲取連接池的超時時間
        'loadAverageTime'   => 0.001, // 設(shè)置 負載閾值
    ],

    // 添加 Redis 及對應(yīng)的連接池配置
    /*################ REDIS CONFIG ##################*/
    'REDIS' => [
        'host'          => '127.0.0.1', // Redis 地址
        'port'          => '6379', // Redis 端口
        'auth'          => 'easyswoole', // Redis 密碼
        'timeout'       => 3.0, // Redis 操作超時時間
        'reconnectTimes' => 3, // Redis 自動重連次數(shù)
        'db'            => 0, // Redis 庫
        'serialize'     => \EasySwoole\Redis\Config\RedisConfig::SERIALIZE_NONE, // 序列化類型,默認不序列化
        'packageMaxLength' => 1024 * 1024 * 2, // 允許操作的最大數(shù)據(jù)
        // 配置 Redis 連接池配置,配置詳細說明請看連接池組件 http://www.b3f21.cn/Components/Pool/introduction.html
        'intervalCheckTime' => 15 * 1000, // 設(shè)置 連接池定時器執(zhí)行頻率
        'maxIdleTime'   => 10, // 設(shè)置 連接池對象最大閑置時間 (秒)
        'maxObjectNum'  => 20, // 設(shè)置 連接池最大數(shù)量
        'minObjectNum'  => 5, // 設(shè)置 連接池最小數(shù)量
        'getObjectTimeout'  => 3.0, // 設(shè)置 獲取連接池的超時時間
        'loadAverageTime'   => 0.001, // 設(shè)置 負載閾值
    ],
];

生產(chǎn)與開發(fā)配置分離

php easyswoole.php server start 命令下,默認為開發(fā)模式,加載 dev.php (3.1.2 之前為 dev.env) 運行 php easyswoole.php server start -mode=produce 命令時,為生產(chǎn)模式,加載 produce.php (3.1.2 之前為 produce.env)

舊版本 EasySwoole (3.4.x 以前的版本),在 php easyswoole.php start 命令下,默認為開發(fā)模式,加載 dev.php (3.1.2 之前為 dev.env)。運行 php easyswoole.php start produce 命令時,為生產(chǎn)模式,加載 produce.php (3.1.2 之前為 produce.env)

DI 注入配置

EasySwoole 3.x 提供了幾個 Di 參數(shù)配置,可自定義配置腳本錯誤異常處理回調(diào)、控制器命名空間、最大解析層級等。

<?php
// 配置錯誤處理回調(diào)
\EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::ERROR_HANDLER, function () {
});

// 配置腳本結(jié)束回調(diào)
\EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::SHUTDOWN_FUNCTION, function () {
});

// 配置控制器命名空間
\EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::HTTP_CONTROLLER_NAMESPACE, 'App\\HttpController\\');

// 配置 HTTP 控制器最大解析層級
\EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::HTTP_CONTROLLER_MAX_DEPTH, 5);

// 配置http控制器異?;卣{(diào)
\EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::HTTP_EXCEPTION_HANDLER, function () {});

// HTTP 控制器對象池最大數(shù)量
\EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::HTTP_CONTROLLER_POOL_MAX_NUM, 15);

自定義 Config 驅(qū)動

EasySwoole3.2.5 版本后,默認配置驅(qū)動存儲從 SplArray 改為了 swoole_table,修改配置之后,所有進程同時生效。在 3.4.x 版本后,由于特殊原因,默認配置驅(qū)動存儲又從 swoole_table 改為了 SplArray,修改配置之后,僅在當(dāng)前進程生效。所以在 3.2.5 ~ 3.3.7 版本中,默認配置驅(qū)動存儲為 swoole_table。

AbstractConfig

\EasySwoole\Config\AbstractConfig 抽象類提供了以下幾個方法,用于給其他 config 驅(qū)動繼承:

  • isDev() 該方法在 3.4.x 版本中已移除,請用 \EasySwoole\EasySwoole\Core::getInstance()->runMode() == 'dev' 判斷是否為開發(fā)環(huán)境。 (在 3.4.x 之前版本可通過該方法獲得當(dāng)前運行環(huán)境是否為開發(fā)環(huán)境)

  • abstract function getConf($key = null); 獲取一個配置

  • abstract function setConf($key, $val): bool; 設(shè)置一個參數(shù)

  • abstract function load(array $array): bool; 重新加載配置項

  • abstract function merge(array $array): bool; 合并配置項

  • abstract function clear(): bool; 清除所有配置項

自定義配置存儲驅(qū)動

EasySwoole 中,自帶了 SplArrayswoole_table 驅(qū)動實現(xiàn),可自行查看源碼進行深入了解。

目前最先版本默認驅(qū)動為 SplArray。

如需要修改配置存儲驅(qū)動,配置步驟如下:

  • 繼承 AbstractConfig 實現(xiàn)各個方法
  • Bootstrap 事件 事件中修改 config 驅(qū)動(直接在 bootstrap.php 文件中加入如下代碼即可)
<?php
\EasySwoole\EasySwoole\Config::getInstance(new \EasySwoole\Config\SplArrayConfig());

由于 bootstrap 事件 是由 EasySwoole 啟動腳本執(zhí)行,當(dāng)你需要寫 cli 腳本需要初始化 EasySwoole 框架基礎(chǔ)組件時,需要自行引入 bootstrap.php 文件。

動態(tài)配置問題

由于 swoole 是多進程的,如果使用 SplArray 方式存儲,在單個進程修改配置后,其他進程將不會生效,使用swoole_table 方式的則會全部生效,需要特別注意。

EasySwoole 3.4.x 之前版本,框架采用 swoole_table 作為默認配置驅(qū)動存儲。所以當(dāng)你在控制器( worker 進程)中修改某一項配置時,由于進程隔離,修改的配置不會在其他進程生效,所以我們可以使用動態(tài)配置: 動態(tài)配置將配置數(shù)據(jù)存儲在 swoole_table 中,獲取/修改配置數(shù)據(jù)時是從 swoole_table 直接操作,所有進程都可以使用。但是在目前最新版本中默認配置驅(qū)動存儲變成了 SplArray,在單個進程修改配置后,其他進程將不會生效,需要特別注意。

其他

  • QQ 交流群

    • VIP 群 579434607 (本群需要付費 599 元)
    • EasySwoole 官方一群 633921431(已滿)
    • EasySwoole 官方二群 709134628(已滿)
    • EasySwoole 官方三群 932625047(已滿)
    • EasySwoole 官方四群 779897753(已滿)
    • EasySwoole 官方五群 853946743(已滿)
    • EasySwoole 官方六群 524475224(已滿)
    • EasySwoole 官方七群 1016674948
  • 商業(yè)支持:

    • QQ 291323003
    • EMAIL admin@fosuss.com
  • 作者微信

  • 捐贈 您的捐贈是對 EasySwoole 項目開發(fā)組最大的鼓勵和支持。我們會堅持開發(fā)維護下去。 您的捐贈將被用于:

    • 持續(xù)和深入地開發(fā)
    • 文檔和社區(qū)的建設(shè)和維護
  • EasySwoole 的文檔使用 EasySwoole 框架 提供服務(wù),采用 MarkDown 格式 和自定義格式編寫,若您在使用過程中,發(fā)現(xiàn)文檔有需要糾正 / 補充的地方,請 fork 項目的文檔倉庫,進行修改補充,提交 Pull Request 并聯(lián)系我們。

主站蜘蛛池模板: 日本免费三片在线播放 | 日本xxxx在线播放 | 日韩三级黄色 | 成人在线网址 | 久草手机视频在线观看 | 中文字幕国产一区 | 成人国产精品视频 | 国产亚洲一区二区三区四区 | 亚洲高清免费 | 欧美日韩午夜 | 色婷婷亚洲精品 | 在线a天堂 | 成人免费视频网站 | 成人在线精品视频 | 国产高清免费 | 日韩欧美黄色一级片 | 国产精久久一区二区三区 | 成人伊人网 | 国产精品国产三级国产 | 成人影院一区二区三区 | av影院在线 | 日韩成人免费在线视频 | 麻豆传媒在线免费观看 | 丁香五月天综合缴情网 | 91精品爽啪蜜夜国产在线播放 | 日韩国产欧美一区二区三区 | 久久天天躁狠狠躁亚洲综合公司 | 国产精选免费进入 | 久青草视| 国产日本欧美在线 | 国产91精品一区 | 亚洲黄色影院 | 日韩精品中文字幕在线 | 91久久精品视频 | 欧美 亚洲 另类 激情 另类 | 特黄色毛片| 欧美啪啪网| 国产精品三级三级三级 | 毛片精品 | 色在线观看视频 | 中文字幕综合在线 |