workerman

1天前发布 3 0 0

高性能PHP应用容器 workerman

所在地:
中国
收录时间:
2025-12-05
workermanworkerman

Workerman 是一个高性能、纯 PHP 编写的 socket 服务器框架,用于开发 TCP/UDP/HTTP/WebSocket 等网络服务,无需依赖 Apache、Nginx 或 PHP-FPM。

它的核心特点是:常驻内存、异步非阻塞、多进程模型,适用于构建实时通信、聊天系统、游戏后端、物联网(IoT)网关等高并发场景。


✅ 核心特性

特性 说明
纯 PHP 实现 不依赖 C 扩展(但可配合 event/libevent 提升性能)
常驻内存(Long Running) 启动后 PHP 进程不退出,避免重复加载脚本,极大提升性能
多进程模型 自动 fork 多个 Worker 进程,利用多核 CPU
支持多种协议 内置 HTTP、WebSocket、TCP、UDP、Text 协议,也支持自定义协议
跨平台 支持 Linux / macOS / Windows(Windows 下功能受限)
零第三方依赖 只需 PHP CLI 环境(建议 ≥ 7.0)

🌐 典型应用场景

  1. WebSocket 实时聊天室
  2. 在线客服系统
  3. 股票/行情推送服务
  4. 游戏服务器(如房间匹配、实时同步)
  5. IoT 设备接入网关
  6. 替代传统 PHP-FPM 做高性能 API 服务

💡 举例:用 Workerman 写一个 WebSocket 聊天服务器,10 行代码即可实现广播消息


🔧 简单示例:WebSocket 服务器

1<?php
2require_once __DIR__ . '/vendor/autoload.php';
3
4use Workerman\Worker;
5
6// 创建一个 WebSocket 服务器
7$ws_worker = new Worker("websocket://0.0.0.0:2346");
8
9// 当有客户端连接时
10$ws_worker->onConnect = function ($connection) {
11    echo "New connection\n";
12};
13
14// 当收到消息时
15$ws_worker->onMessage = function ($connection, $data) {
16    // 广播给所有客户端
17    foreach ($ws_worker->connections as $conn) {
18        $conn->send($data);
19    }
20};
21
22// 运行 worker
23Worker::runAll();

启动命令:

1php start.php start

前端用 JS 即可连接:

1const ws = new WebSocket('ws://127.0.0.1:2346');
2ws.onmessage = (e) => console.log(e.data);
3ws.send('Hello Workerman!');

⚙️ 与传统 PHP(Apache/Nginx + PHP-FPM)的区别

对比项 传统 PHP Workerman
运行模式 请求-响应(每次请求重启脚本) 常驻内存(进程长期运行)
并发能力 低(依赖进程/线程池) 高(异步非阻塞 + 多进程)
适用场景 Web 页面、REST API 实时通信、长连接、推送
状态保持 无(无状态) 可在内存中保存用户连接、数据
启动方式 通过 Web 服务器触发 命令行直接运行 php server.php start

📦 生态工具

  • GatewayWorker:基于 Workerman 的分布式通讯框架,适合大型聊天系统
  • Webman:基于 Workerman 的高性能 HTTP 框架(类似 Laravel 但为常驻内存设计)
  • PHPSocket.IO:实现实时双向通信(兼容 Socket.IO 客户端)

⚠️ 注意事项

  • 不能直接处理 .php 网页文件(它不是 Web 服务器)
  • 全局变量会“污染”(因为进程常驻,变量不会自动销毁)
  • 数据库连接需持久化或重连机制
  • 不适合传统 CMS(如 WordPress)

🌍 官网 & 资源

💡 作者是中国人(walkor),文档和社区对中文用户非常友好。


🐺 总结

Workerman = 用 PHP 写高性能网络服务器的瑞士军刀

  • 如果你需要 实时、长连接、高并发,选它!
  • 如果你只是做普通网站,继续用 Laravel / ThinkPHP + Nginx 就好。

数据统计

相关导航