Swoole服务器处理静态资源请求

<?php
declare(strict_types=1);
ini_set('display_errors', 'On');
error_reporting(-1);
set_time_limit(0);
ini_set('memory_limit', '-1');
PHP_SAPI !== 'cli' && exit('脚本只能在命令行执行');

$server = new Swoole\Http\Server('localhost', 9501); // 异步风格HTTP服务器

$server->on('request', function (Swoole\Http\Request $request, Swoole\Http\Response $response) {
    echo "请求URI:{$request->server['request_uri']}" . PHP_EOL;
    $response->end('<h1>Hello Swoole. #' . rand(1000, 9999) . '</h1>');
});

// 静态资源处理配置
$server->set([
    'enable_static_handler' => true,
    'document_root' => __DIR__ . '/static', // 静态资源目录
    'static_handler_locations' => [
        '/img', // 静态资源目录下的img子目录,用于存放图片文件
        '/css', // 静态资源目录下的css子目录,用于存放样式文件
        '/js', // 静态资源目录下的js子目录,用于存放图片JavaScript文件
    ],
]);

$server->start();


// 启动服务器:/program/php/bin/php /inetpub/wwwroot/swoole/server.php
// 访问示例①:http://IP地址:9501/img/demo.png
// 访问示例②:http://IP地址:9501/css/demo.css
// 访问示例③:http://IP地址:9501/js/demo.js
// 访问示例④:http://IP地址:9501/dir/demo.html


//========== 总结 ==========//
// 1、只有异步风格服务器支持处理静态资源,协程风格服务器不支持处理静态资源。
// 2、静态资源处理的优先级高于request事件回调,只要匹配到static_handler_locations参数指定的路径就不会再执行request事件回调,
//    注意是只要匹配路径,而不是静态资源文件存在。



<?php
declare(strict_types=1); // 开启严格类型
ini_set('display_errors', 'On');
error_reporting(-1);
set_time_limit(0);
ini_set('memory_limit', '-1');
PHP_SAPI !== 'cli' && exit('脚本只能在命令行执行');

Swoole\Coroutine\run(function () {
    $server = new Swoole\Coroutine\Http\Server('localhost', 9501); // 协程风格HTTP服务器

    $server->handle('/', function (Swoole\Http\Request $request, Swoole\Http\Response $response) {
        echo "请求URI:{$request->server['request_uri']}" . PHP_EOL;
        $response->end('<h1>Hello Swoole. #' . rand(1000, 9999) . '</h1>');
    });

    // 静态资源处理配置【重要说明:由于是协程风格HTTP服务器,下面静态资源相关的配置都不会生效】
    $server->set([
        'enable_static_handler' => true,
        'document_root' => __DIR__ . '/static', // 静态资源目录
        'static_handler_locations' => [
            '/img', // 静态资源目录下的img子目录,用于存放图片文件
            '/css', // 静态资源目录下的css子目录,用于存放样式文件
            '/js', // 静态资源目录下的js子目录,用于存放图片JavaScript文件
        ],
    ]);

    $server->start();
});

Copyright © 2024 码农人生. All Rights Reserved