讲师中心 微信公众号
AI工具推荐 视频效率加速

Workerman如何接收外部Web请求?配置Http协议服务

雨敏吖_5677

雨敏吖_5677

发布时间:2026-05-24 21:24:46

|

311人浏览过

|

来源于php中文网

原创

Workerman必须显式启用HTTP协议才能处理Web请求,否则onMessage仅接收原始字节流,无法解析HTTP方法、Header和Body;监听地址需写为http://0.0.0.0:2345,引入Workerman\Protocols\Http\Request类,通过$request->get()、$request->post()等方法获取参数,响应时须手动设置Content-Type和状态码,HTTP/2需严格配置SSL且不支持自签名证书。

workerman如何接收外部web请求?配置http协议服务

Workerman必须显式启用HTTP协议才能处理Web请求

Workerman默认启动的是裸TCP服务,onMessage收到的只是原始字节流,没有请求方法、Header、Body解析能力。浏览器或curl发来的HTTP请求会被当成乱码,$_POST、$_GET永远为空——这不是配置错误,是协议栈根本没加载。

实操建议:

  • 监听地址必须写成 http://0.0.0.0:2345(不是 tcp:// 或只写端口)
  • 确保已引入 Workerman\Protocols\Http\Request,但无需手动实例化,框架自动注入
  • Windows下注意关闭占用端口的程序(如IIS、Skype),否则 Worker::runAll() 会静默失败
  • 用 curl -v http://127.0.0.1:2345 测试连通性,别依赖浏览器地址栏——它可能缓存304或跳HTTPS

onMessage里怎么拿到GET参数和POST数据

$request 是 Workerman\Protocols\Http\Request 实例,不是超全局数组。所有解析都得靠它主动取,且不同Content-Type走不同路径。

常见错误现象:$request->post() 返回空数组,但curl确认带了 -d "name=foo" ——大概率是客户端没发 Content-Type: application/x-www-form-urlencoded,或者用了JSON但误调了 post()。

实操建议:

  • $request->get() 拿URL查询参数,支持嵌套如 ?a[b]=1
  • $request->post() 只处理 application/x-www-form-urlencoded 和 multipart/form-data;上传文件必须带正确 boundary,否则 $request->file() 为空
  • JSON请求必须用 $request->rawBody() 拿原始字符串,再 json_decode($request->rawBody(), true)
  • 不要尝试在 onMessage 中 require ThinkPHP/Laravel 入口文件——它们强依赖 $_POST 填充机制,会直接报错或返回空数组

为什么响应头不生效或中文乱码

Workerman HTTP Server 不自动设置 Content-Type,也不做字符编码推断。直接 $connection->send('你好') 会被浏览器当 ISO-8859-1 解析。

性能影响:频繁调用 $connection->sendHeader() 多次发送状态行和头字段,不如拼成完整响应体一次发完,减少系统调用开销。

实操建议:

  • 发送HTML/JSON前务必加头:$connection->header('Content-Type', 'text/html; charset=utf-8')
  • 状态码要手写完整响应行:$connection->send("HTTP/1.1 404 Not Found\r\nContent-Type: text/plain\r\n\r\nNot found")
  • 避免在循环里反复 send() 小块数据;大文件下载建议用 fopen()+fpassthru() 配合 Connection: close 头,防止连接复用干扰
  • 调试时用 var_dump($request->header) 看客户端实际发了什么头,别猜

HTTP/2需要SSL且配置极易出错

Workerman 的 Http2 协议强制要求 TLS,且不接受自签名证书的宽松校验(verify_peer => false 仅对客户端有效)。配置错一个路径,进程直接退出,日志里只报 ssl handshake failed。

容易踩的坑:

  • local_cert 和 local_pk 必须是绝对路径,相对路径在守护进程模式下会失效
  • 证书链不完整(比如缺中间CA)会导致 Chrome 显示 ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY
  • $worker->protocol = "Http2" 必须配合 $worker->transport = "ssl",漏掉任一就退化成HTTP/1.1
  • HTTP/2 不支持 Connection: keep-alive 头,别手动加,框架自动管理多路复用

复杂点在于:HTTP/2 的服务器推送(Server Push)、头部压缩(HPACK)等功能需客户端明确支持,Workerman只提供协议层,业务逻辑仍需自己组织资源依赖关系。别指望开个开关就自动优化页面加载速度。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3503

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

874

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

6506

2024.03.12

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

5430

2024.08.16

Go 语言 HTTP 编程与中间件开发教程合集
Go 语言 HTTP 编程与中间件开发教程合集

全面讲解 Go 语言 HTTP 编程的核心知识,涵盖 net/http 标准库的 Server/Handler/HandlerFunc 体系、DefaultServeMux 路由注册与自定义路由器、Request / ResponseWriter 请求响应处理、中间件(Middleware)链式设计模式与常见中间件(日志/CORS/认证/限流)开发、http.Client 的超时配置与连接池管理、Cookie / Session 处理、

501

2026.05.08

Workerman安装配置教程
Workerman安装配置教程

Workerman安装配置教程专题提供Workerman安装配置、WebSocket开发、TCP通信、异步编程、高并发服务搭建与PHP实时通信开发教程。

186

2026.05.20

Workerman实时通信与长连接开发教程
Workerman实时通信与长连接开发教程

WWorkerman实时通信与长连接开发教程聚合实时通信、聊天室、长连接、消息推送、AI流式输出等Workerman高并发开发内容。

202

2026.05.20

Workerman异步通信与TCP服务器开发
Workerman异步通信与TCP服务器开发

Workerman异步通信与TCP服务器开发专题整理Workerman异步通信、TCP服务、HTTP服务、WebSocket开发与高并发PHP服务器教程。

207

2026.05.20

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

80

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Webman中文手册
Webman中文手册

共0课时 | 0人学习

Workerman官方手册
Workerman官方手册

共0课时 | 0人学习

ThinkPHP5.1完全开发手册
ThinkPHP5.1完全开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn