easyswoole - 基于swoole扩展实现的一款高性能php框架

配置文件

EasySwoole 框架提供了非常靈活自由的全局配置功能,配置文件采用 PHP 返回?cái)?shù)組方式定義,對(duì)于一些簡(jiǎn)單的應(yīng)用,無需修改任何配置,對(duì)于復(fù)雜的要求,還可以自行擴(kuò)展自己獨(dú)立的配置文件和進(jìn)行動(dòng)態(tài)配置。
框架安裝完成后系統(tǒng)默認(rèn)的全局配置文件是項(xiàng)目根目錄下的 produce.phpdev.php 文件,(在 3.1.2 版本之前是 dev.envproduce.env),3.7.x 版本(最新版)支持在啟動(dòng) EasySwoole 框架時(shí)以指定的配置文件( dev.php / produce.php)運(yùn)行,詳細(xì)啟動(dòng)命令請(qǐng)看 基本管理命令章節(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,
        // 默認(rèn) Server 運(yùn)行模式
        'RUN_MODEL'      => SWOOLE_PROCESS,
        // Swoole_Server 運(yùn)行配置( 完整配置可見[Swoole 文檔](http://swoole.easyswoole.com/ServerStart/Tcp/method.html) 的 mode 參數(shù) )
        'SETTING'        => [
            // 運(yùn)行的 worker 進(jìn)程數(shù)量
            'worker_num'            => 8,
            // 設(shè)置異步重啟開關(guān)。設(shè)置為 true 時(shí),將啟用異步安全重啟特性,Worker 進(jìn)程會(huì)等待異步事件完成后再退出。
            'reload_async'          => true,
            // 開啟后自動(dòng)在 onTask 回調(diào)中創(chuàng)建協(xié)程
            'task_enable_coroutine' => true,
            'max_wait_time'         => 3,
            // (可選參數(shù))使用 http 上傳大文件時(shí)可以進(jìn)行配置
            // 'package_max_length' => 100 * 1024 * 1024, // 即 100 M

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

    ### 日志相關(guān)配置 (目前最新)EasySwoole 3.4.4 及以后版本支持
    "LOG" => [
        // 設(shè)置記錄日志文件時(shí)日志文件存放目錄
        'dir' => null,
        // 設(shè)置記錄日志時(shí)的日志最低等級(jí),低于此等級(jí)的日志不進(jìn)行記錄和顯示
        'level' => \EasySwoole\Log\LoggerInterface::LOG_LEVEL_DEBUG,
        // 設(shè)置日志處理器 `handler` (handler)
        'handler' => null,
        // 設(shè)置開啟控制臺(tái)日志記錄到日志文件
        'logConsole' => true,
        // 設(shè)置開啟在控制臺(tái)顯示日志
        'displayConsole'=>true,
        // 設(shè)置打印日志時(shí)忽略哪些分類的日志不進(jìn)行記錄
        '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)配置的說明,詳細(xì)請(qǐng)看 日志 章節(jié)。

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

  • MAIN_SERVER.SERVER_TYPE:
    • EASYSWOOLE_WEB_SERVER: 表示框架主服務(wù)為 Http 服務(wù)(框架默認(rèn)提供的服務(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 ),否則將出錯(cuò)。具體設(shè)置對(duì)應(yīng)的回調(diào)的方式請(qǐng)參考 Tcp 服務(wù)章節(jié)WebSocket 服務(wù)章節(jié)。關(guān)于同時(shí)支持多個(gè)服務(wù)的使用也請(qǐng)查看 Tcp 服務(wù)章節(jié)WebSocket 服務(wù)章節(jié)

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

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

配置操作類

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

設(shè)置和獲取配置項(xiàng)都支持點(diǎn)語法分隔,具體請(qǐng)看下面獲取配置的代碼示例

<?php

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

// 獲取配置 按層級(jí)用點(diǎn)號(hào)分隔
$instance->getConf('MAIN_SERVER.SETTING.task_worker_num');

// 設(shè)置配置 按層級(jí)用點(diǎn)號(hào)分隔
$instance->setConf('DATABASE.host', 'localhost');

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

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

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

添加用戶配置項(xiàng)

每個(gè)用戶都有自己的配置項(xiàng),添加自己的配置項(xiàng)非常簡(jiǎn)單,其中一種方法是直接在配置文件中添加即可,如下面的例子: 下面示例中添加了自定義的 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 及對(duì)應(yīng)的連接池配置
    /*################ MYSQL CONFIG ##################*/
    'MYSQL' => [
        'host'          => '127.0.0.1', // 數(shù)據(jù)庫(kù)地址
        'port'          => 3306, // 數(shù)據(jù)庫(kù)端口
        'user'          => 'root', // 數(shù)據(jù)庫(kù)用戶名
        'password'      => 'root', // 數(shù)據(jù)庫(kù)用戶密碼
        'timeout'       => 45, // 數(shù)據(jù)庫(kù)連接超時(shí)時(shí)間
        'charset'       => 'utf8', // 數(shù)據(jù)庫(kù)字符編碼
        'database'      => 'easyswoole', // 數(shù)據(jù)庫(kù)名
        'autoPing'      => 5, // 自動(dòng) ping 客戶端鏈接的間隔
        'strict_type'   => false, // 不開啟嚴(yán)格模式
        'fetch_mode'    => false,
        'returnCollection'  => false, // 設(shè)置返回結(jié)果為 數(shù)組
        // 配置 數(shù)據(jù)庫(kù) 連接池配置,配置詳細(xì)說明請(qǐng)看連接池組件 http://www.zbjtqy.com/Components/Pool/introduction.html
        'intervalCheckTime' => 15 * 1000, // 設(shè)置 連接池定時(shí)器執(zhí)行頻率
        'maxIdleTime'   => 10, // 設(shè)置 連接池對(duì)象最大閑置時(shí)間 (秒)
        'maxObjectNum'  => 20, // 設(shè)置 連接池最大數(shù)量
        'minObjectNum'  => 5, // 設(shè)置 連接池最小數(shù)量
        'getObjectTimeout'  => 3.0, // 設(shè)置 獲取連接池的超時(shí)時(shí)間
        'loadAverageTime'   => 0.001, // 設(shè)置 負(fù)載閾值
    ],

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

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

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

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

DI 注入配置

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

<?php
// 配置錯(cuò)誤處理回調(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 控制器最大解析層級(jí)
\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 控制器對(duì)象池最大數(shù)量
\EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::HTTP_CONTROLLER_POOL_MAX_NUM, 15);

自定義 Config 驅(qū)動(dòng)

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

AbstractConfig

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

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

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

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

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

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

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

自定義配置存儲(chǔ)驅(qū)動(dòng)

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

目前最先版本默認(rèn)驅(qū)動(dòng)為 SplArray

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

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

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

動(dòng)態(tài)配置問題

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

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

其他

  • QQ 交流群

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

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

  • 捐贈(zèng) 您的捐贈(zèng)是對(duì) EasySwoole 項(xiàng)目開發(fā)組最大的鼓勵(lì)和支持。我們會(huì)堅(jiān)持開發(fā)維護(hù)下去。 您的捐贈(zèng)將被用于:

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

主站蜘蛛池模板: 实木中药柜,实木中药斗,木制中药柜,木制中药柜的价格,实木中草药柜,安国美佳中药柜厂家 | 上海婺川实业有限公司| 智能电地暖_电地暖安装_电地暖价格-西安秦星暖通工程有限公司 | 瑞凯科技,吉林省瑞凯科技,吉林省瑞凯科技股份有限公司 | 廊坊微信营销,廊坊小程序开发,廊坊APP开发(安卓_苹果ios开发),微信朋友圈广告,百度推广,廊坊网络公司品牌服务商-河北盛秋网络科技有限公司 | 江西新华电脑学院_南昌新华电脑中专学校_新华电脑培训学校_官方网站 | 台车炉厂家_台车式退火炉_台车式回火炉—安徽大新工业炉有限公司 | 山东岱新起重机械有限公司,单梁桥式起重机,双梁桥式起重机,通用式门式起重机,欧式起重机系列 | 园林绿化平台|园林绿化网|苗木网|苗圃网||苗木报价网|园林招标网|园林苗木网|园林工程网|景观设计网|园林机械网|绿化苗木网| | 潍坊亿宏重工机械有限公司,破碎机,高性能立磨机,颚式破碎机,锤式破碎机反击式破碎机,重锤式破碎机,高性能反击式破碎机,圆锥式破碎机,给料机系列,链板给料机系列,简易给料机系列,振动给料机 | 网站建设|外贸网站建设|做网站公司-济南超越互联-推荐 | 泰州光明会计师事务所有限公司-财务业务审计,会计服务业务及资产评估业务的专业服务机构 | 泰安华特玻璃钢有限公司|泰安玻璃钢|泰安华特玻璃钢 | 人工气候-智能-低温生化培养箱厂家|价格-上海予卓仪器 | 青州市昌达机械设备有限公司_洗石机-洗砂机-筛沙机-砂石分离机-洗轮机-制砂机 | 妙手网-圆心大药房-广东圆心恒金堂医药连锁有限公司-放心的网上药店_妙手医生旗下正规网上买药平台 | 深圳理津技术有限公司(REHLOGY)-全球工业品供应商:自动化产品|仪器仪表|设备|备品备件|工具|消耗品|非标设备|建筑工程等一站式综合服务! | 容积式换热器,半容积式换热器-绍兴市压力容器有限公司 | 上海企业团建|上海团建|上海团建活动|上海拓展培训|上海拓展训练|傲朗企业管理顾问(上海)有限公司 | 青岛大倾角输送带厂家_橡胶挡边输送带_波纹状挡边输送带_大倾角输送带型号-青岛朗森橡胶有限公司 | 找刑事辩护律师_找深圳刑事律师多少钱★王平聚【清华博士/刑法教授】 | 西安西雷脉冲功率技术有限公司-高压调制器/加速器与脉冲功率系统的研发/生产/应用推广/高压脉冲电源的应用研究/设计/生产和销售/高功率脉冲器件/材料与仪器设备的研发/生产和销售/高电压/大电流/强磁场环境的模拟及测试服务/会议会展服务/货物及进出口的业务/脉冲功率技术领域类的技术转让 | 温湿度变送器_pm2.5传感器_湿敏电阻_二氧化碳传感器_甲醛传感器-美特瑞科技 | 宁波允泰仪器有限公司-硬度计、拉力试验机、盐雾试验箱、影像测量仪、气动量仪 | 乌鲁木齐万通汽车学校| 世博磁力泵,耐腐蚀磁力泵,耐酸碱磁力泵,氟塑料磁力泵-苏州冠裕机电科技有限公司 | 矿用精确定位系统,井下4G无线通讯系统,工作面集控系统,皮带保护系统-山东新云鹏电气有限公司 | 什木坊全屋定制官网_木门|护墙|衣柜|橱柜等全品类定制家具 | 楼宇门厂家-氟碳漆门-不锈钢大门-单元门-锌合金大门-永康市龙卫门业 | 液位变送器_智能压力变送器_3051差压变送器_单双法兰,投入式,电容式,温度变送器-淮安润中仪表科技有限公司 | 面粉加工成套设备|面粉加工设备|面粉加工机械|面粉机组设备-河南成立粮油机械有限公司 | 烟台真空包装,烟台木包装,烟台熏蒸木箱-烟台福岭木制品有限公司 烟台通风管道,烟台风机风管,烟台风阀-烟台福莱通风设备有限公司 | 水表_智能电表_抄表软件_ic卡水控机_电磁水表厂家-深圳市华熙仪数码科技有限公司 | 眉山净源居环保科技有限公司,眉山除甲醛公司,眉山甲醛治理,眉山保洁服务,眉山家政保洁,眉山家电维修 - 眉山净源居环保科技有限公司,眉山除甲醛公司,眉山甲醛治理,眉山保洁服务,眉山家政保洁,眉山家电维修 | 卧式镗铣床,道斯镗铣机床加工中心-江苏道斯数控科技有限公司 | 兰州职业学校-新华互联网学校咨询平台中心 | 企业头条—优府网企业自媒体| 搅拌设备_搅拌器_浓密机_浆式_顶入式_不锈钢「赛鼎机械」 | 合肥年会策划-合肥开业庆典公司-合肥会务活动礼仪公司-合肥展台搭建/音响租赁公司 [七色海] | 山东中橡新材料有限公司-专业色素炭黑厂家-生产销售各种色素炭黑-用途广泛-价格优势-供应稳定 | 全自动滤水器_射水抽气器_气液两相流疏水器-连云港神美电力辅机有限公司 |