配置

Shadowfax的配置文件是位于根目录的shadowfax.yml,如果你不熟悉YAML语法,需要提前了解一下。

Name

设置Shadowfax应用的名称,启动的Shadowfax进程将使用该配置来命名(MacOS下无效)。

Type

设置Shadowfax服务器类型,支持httpwebsocket

  • 设置为http时将启动一个HTTP服务器;
  • 设置为websocket时将启动一个WebSocket服务器。需要注意的是,WebSocket服务器同时也支持HTTP服务器。

Host

设置Shadowfax服务器监听的IP地址,默认为127.0.0.1。该项配置为Swoole\Server构造函数的第一个参数。

Port

设置Shadowfax服务器监听的端口,默认为1215。该项配置为Swoole\Server构造函数的第二个参数。

Mode

设置Shadowfax服务器的模式,支持processbase,默认为process。该项配置为Swoole\Server构造函数的第三个参数。

Access Log

访问日志的开关,默认开启,关闭后将不会在控制台上打印HTTP访问日志。

App Pool Capacity

设置Laravel Application池的容量,仅在启用Swoole的协程特性后有效。

Server

设置Shadowfax服务器的运行时的参数,该配置为映射类型。在启动服务器时,该配置的所有选项将被传入Swoole\Server::set()方法。默认为:

server:
  worker_num: 1
  enable_coroutine: false

{primary} 其中hook_flags可设置为SWOOLE_HOOK_ALL,该值会被自动转换为SWOOLE_HOOK_ALL常量,便于启用一键协程化。

Abstracts

设置需要被重置的对象列表,这里只能是被注册到Laravel容器里面的对象。该配置为数组类型,数组内的所有对象将在请求结束时被重置,这能帮助消除上一个请求对下一个请求造成的资源污染。默认值为:

abstracts:
  - cookie
  - session
  - session.store
  - redirect
  - auth
  - auth.driver
  - Illuminate\Session\Middleware\StartSession

Controllers

设置需要被清理的控制器类名列表,该数组内的控制器实例将会在请求结束时从Route中清理掉。有两种配置方式:

  1. 清除所有控制器(默认):
controllers:
  - "*"
  1. 指定需要被清除的控制器:
controllers:
  - App\Http\Controllers\FooController
  - App\Http\Controllers\BarController

Cleaners

设置Cleaner列表。该配置项为数组类型,可帮助开发者注册自定义的Cleaner,所有的Cleaner将在请求结束时运行。 该配置项除了可以添加Cleaner类名,也可以添加目录,Shadowfax会自动加载目录下所有的Cleaner类。 需要注意的是,只支持配置app/目录下的目录,并且必须遵循PSR4规范。

例如:

cleaners:
  - app/Cleaners/
  - app/OtherDir/
  - CustomNamespace\FooCleaner
  - CustomNamespace\BarCleaner

DB Pools

设置数据库连接池。该配置项为映射类型,其中键名为数据库连接名,键值为连接池容量。Shadowfax将在Worker进程启动时为该配置项中的数据库连接创建连接池,例如:

db_pools:
  mysql: 3
  pgsql: 5

{primary} 连接池功能必须启用Swoole的协程特性(即server.enable_coroutine设置为true),否则即使配置了,也不会创建连接池。

Redis Pools

设置Redis连接池。该配置项为映射类型,其中键名为Redis连接名,键值为连接池容量。Shadowfax将在Worker进程启动时为该配置项中的Redis连接创建连接池,例如:

redis_pools:
  default: 3
  cache: 5

Controller Server

设置Shadowfax的Controller服务器配置,Controller服务器可以stop|reloadShadowfax服务器:

controller:
  host: 127.0.0.1
  port: 1216