<?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