# 3.1 環境變量
系統環境變量,相應的環境配置如下:
```bash
$>vi ~/.bashrc
...
$>export MSF_ENV=...
```
## docker
```
$>export MSF_ENV=docker
```
## dev
```
$>export MSF_ENV=dev
```
## qa
```
$>export MSF_ENV=qa
```
## online
```
$>export MSF_ENV=product_en
```
## 環境變量的應用
```php
#!/home/worker/php/bin/php
<?php
/**
* swoole server
*
* @author camera360_server@camera360.com
* @copyright Chengdu pinguo Technology Co.,Ltd.
*/
define('ROOT_PATH', __DIR__);
define('APP_DIR', ROOT_PATH . '/app');
define('APPLICATION_ENV', $_ENV['MSF_ENV'] ?? 'docker');
define('SYSTEM_NAME', 'demo');
define("WWW_DIR", realpath(dirname(__FILE__) . '/..'));
define('RUNTIME_DIR', WWW_DIR . '/runtime/' . SYSTEM_NAME);
define('DUMP_TRUNCATED', true);
!is_dir(RUNTIME_DIR) && @mkdir(RUNTIME_DIR, 0755, true);
require_once __DIR__ . '/vendor/autoload.php';
$worker = new \App\AppServer();
PG\MSF\Server::run();
```
[server.php](https://github.com/pinguo/php-msf-demo/blob/master/server.php)
通過`define('APPLICATION_ENV', $_ENV['MSF_ENV'] ?? 'docker');`,定義常量,從而對應加載相應目錄的配置,如:`config/docker/`。
- 0 文檔說明
- 1 為什么研發新框架
- 1.1 傳統php-fpm工作模式的問題
- 1.2 壓測數據對比
- 1.3 小結
- 2 微服務框架研發概覽
- 2.1 通信框架技術選型
- 2.2 swoole
- 2.3 協程原理
- 2.4 異步、并發
- 2.5 小結
- 3 框架運行環境
- 3.1 環境變量
- 3.2 運行代碼
- 3.3 docker
- 3.4 小結
- 4 框架結構
- 4.1 結構概述
- 4.2 控制器
- 4.3 模型
- 4.4 視圖
- 4.5 同步任務
- 4.6 配置
- 4.7 路由
- 4.8 小結
- 5 框架組件
- 5.1 協程
- 5.2 類的加載
- 5.3 異步Http Client
- 5.4 請求上下文
- 5.5 連接池
- 5.6 對象池
- 5.7 RPC
- 5.8 公共庫
- 5.9 RESTful
- 5.10 多語言
- 5.11 雜項
- 5.12 小結
- 6 常見問題
- 7 附錄