swoole_http.php 文件详解

描述
server.host 服务器监听主机地址
server.port 服务器监听端口
public_path 项目的公用文件夹路径
handle_static_files 确定是否使用Swoole响应对静态文件的请求。(您应该使用Nginx来处理静态文件。)
access_log 确定是否在控制台上输出访问日志。
socket_type SWOOLE_SOCK_TCP作为默认值,其他类型:SWOOLE_SOCK_UDP,SWOOLE_SOCK_TCP6,SWOOLE_SOCK_UDP6,SWOOLE_UNIX_STREAM,SWOOLE_UNIX_DGRAM
server.options Server。要获取有关Swoole服务器的更多信息,请阅读官方文档
websocket.enabled 确定是否启用Websocket服务器
hot_reload.enabled 确定是否启用热重装进行开发。
hot_reload.recursively 确定是否以递归方式扫描目录。
hot_reload.directory 热装的基本路径。
hot_reload.log 确定是否在控制台上输出重新加载状态。
hot_reload.filter 用于热重装的过滤器。默认值为.php。
ob_output 如果启用,控制台输出将传输到响应内容。
pre_resolved 创建沙箱后,此处的预解析实例将得到解析。
instances 每个请求都会清除此处的实例。
providers 服务提供商将在每次请求时重新注册。
tables 您可以在此处定义用于数据共享的Swoole表。

示例:


<?php

use Swoole\Table;

return [
    /*
    |--------------------------------------------------------------------------
    | HTTP server configurations.
    |--------------------------------------------------------------------------
    |
    | @see https://www.swoole.co.uk/docs/modules/swoole-server/configuration
    |
    */
    'server' => [
        'host' => env('SWOOLE_HTTP_HOST', '127.0.0.1'),
        'port' => env('SWOOLE_HTTP_PORT', '1215'),
        'public_path' => base_path('public'),
        // Determine if to use swoole to respond request for static files
        'handle_static_files' => env('SWOOLE_HANDLE_STATIC', true),
        // You must add --enable-openssl while compiling Swoole
        // Put `SWOOLE_SOCK_TCP | SWOOLE_SSL` if you want to enable SSL
        'socket_type' => SWOOLE_SOCK_TCP,
        'options' => [
            'pid_file' => env('SWOOLE_HTTP_PID_FILE', base_path('storage/logs/swoole_http.pid')),
            'log_file' => env('SWOOLE_HTTP_LOG_FILE', base_path('storage/logs/swoole_http.log')),
            'daemonize' => env('SWOOLE_HTTP_DAEMONIZE', false),

            // 启用的内核,这个是根据你的CPU内核来的,默认就好
            'reactor_num' => env('SWOOLE_HTTP_REACTOR_NUM', swoole_cpu_num()),
            'worker_num' => env('SWOOLE_HTTP_WORKER_NUM', swoole_cpu_num()),
            'task_worker_num' => env('SWOOLE_HTTP_TASK_WORKER_NUM', swoole_cpu_num()),

            // 要接收的数据不能大于缓冲区输出大小。
            'package_max_length' => 20 * 1024 * 1024,

            // 要发送的数据不能大于缓冲区输出大小。
            'buffer_output_size' => 10 * 1024 * 1024,

            // 套接字连接的最大缓冲区大小
            'socket_buffer_size' => 128 * 1024 * 1024,

            // 工作进程将在处理此数量的请求后重新启动
            'max_request' => 3000,

            // 启用协同发送
            'send_yield' => true,

            // 编译Swoole时必须添加--enable openssl
            'ssl_cert_file' => null,
            'ssl_key_file' => null,
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | 是否启用Websocket服务器
    |--------------------------------------------------------------------------
    */
    'websocket' => [
        'enabled' => env('SWOOLE_HTTP_WEBSOCKET', false),
    ],

    /*
    |--------------------------------------------------------------------------
    | 如果启用,控制台输出将传输到响应内容。
    |--------------------------------------------------------------------------
    */
    'ob_output' => env('SWOOLE_OB_OUTPUT', true),

    /*
    |--------------------------------------------------------------------------
    | 创建沙盒时,将解析此处的预解析实例。
    |--------------------------------------------------------------------------
    */
    'pre_resolved' => [
        'view', 'files', 'session', 'session.store', 'routes',
        'db', 'db.factory', 'cache', 'cache.store', 'config', 'cookie',
        'encrypter', 'hash', 'router', 'translator', 'url', 'log',
    ],

    /*
    |--------------------------------------------------------------------------
    | 这里的实例将在每次请求时被清除。
    |--------------------------------------------------------------------------
    */
    'instances' => [
        //
    ],

    /*
    |--------------------------------------------------------------------------
    | 这里的提供者将根据每个请求进行注册。
    |--------------------------------------------------------------------------
    */
    'providers' => [
        Illuminate\Pagination\PaginationServiceProvider::class,
    ],

    /*
    |--------------------------------------------------------------------------
    | 沙盒应用程序的重置程序。
    |--------------------------------------------------------------------------
    */
    'resetters' => [
        SwooleTW\Http\Server\Resetters\ResetConfig::class,
        SwooleTW\Http\Server\Resetters\ResetSession::class,
        SwooleTW\Http\Server\Resetters\ResetCookie::class,
        SwooleTW\Http\Server\Resetters\ClearInstances::class,
        SwooleTW\Http\Server\Resetters\BindRequest::class,
        SwooleTW\Http\Server\Resetters\RebindKernelContainer::class,
        SwooleTW\Http\Server\Resetters\RebindRouterContainer::class,
        SwooleTW\Http\Server\Resetters\RebindViewContainer::class,
        SwooleTW\Http\Server\Resetters\ResetProviders::class,
    ],

    /*
    |--------------------------------------------------------------------------
    | 在这里定义你的swoole表。
    |
    | @see https://www.swoole.co.uk/docs/modules/swoole-table
    |--------------------------------------------------------------------------
    */
    'tables' => [
        // 'table_name' => [
        //     'size' => 1024,
        //     'columns' => [
        //         ['name' => 'column_name', 'type' => Table::TYPE_STRING, 'size' => 1024],
        //     ]
        // ],
    ]
];