高性能 PHP 进程管理器 | 分布式 | 协程 | 多协议
Kode Process 是一款专为高并发场景设计的高性能 PHP 进程管理器,支持分布式集群、Fiber 协程、多协议解析。
| 特性 | 说明 |
|---|---|
| 🚀 极简 API | Kode::worker() 一行启动,自动检测协议 |
| 📡 多协议 | HTTP、WebSocket、TCP、UDP、Text、SSL |
| 🌐 分布式 | Channel 通讯、GlobalData 共享、负载均衡 |
| ⚡ 协程 | Fiber 协程支持,百万级并发 |
| 🔄 平滑重载 | 热更新代码,不中断连接 |
| ⏱️ 定时器 | 一次性、永久、Cron 表达式 |
| 📢 广播 | 全局广播、群组广播、定向发送 |
| 🔒 安全 | SSL/TLS、连接认证、进程隔离 |
| 📊 监控 | 心跳检测、状态监控、进程管理 |
| 🔧 兼容 | Workerman 零成本迁移 |
composer require kode/process<?php
require __DIR__ . '/vendor/autoload.php';
use Kode\Process\Kode;
Kode::worker('http://0.0.0.0:8080', 4)
->onMessage(function ($conn, $request) {
$conn->send('Hello World!');
})
->start();<?php
require __DIR__ . '/vendor/autoload.php';
use Kode\Process\Kode;
Kode::worker('websocket://0.0.0.0:8081', 4)
->onMessage(fn($conn, $data) => $conn->send($data))
->start();<?php
require __DIR__ . '/vendor/autoload.php';
use Kode\Process\Kode;
Kode::worker('tcp://0.0.0.0:9000', 4)
->onMessage(fn($conn, $data) => $conn->send('Echo: ' . $data))
->start();# 启动服务
kode start
# 停止服务
kode stop
# 平滑重载
kode reload
# 查看状态
kode status
# 版本信息
kode info| 协议 | 地址格式 | 说明 |
|---|---|---|
| HTTP | http://0.0.0.0:8080 |
HTTP 服务器 |
| WebSocket | websocket://0.0.0.0:8081 |
WebSocket 服务器 |
| TCP | tcp://0.0.0.0:9000 |
原始 TCP |
| Text | text://0.0.0.0:9001 |
文本+换行符 |
| UDP | udp://0.0.0.0:9002 |
UDP 服务器 |
| SSL | ssl://0.0.0.0:443 |
SSL/TLS 加密 |
┌─────────────┐
│ Nginx │
│ 负载均衡 │
└──────┬──────┘
│
┌──────────────────┼──────────────────┐
│ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ Server A │ │ Server B │ │ Server C │
│ Worker 1-4│ │ Worker 1-4│ │ Worker 1-4│
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
└──────────────────┼──────────────────┘
│
┌──────────────────┼──────────────────┐
│ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ Channel │ │GlobalData│ │ Redis │
│ :2206 │ │ :2207 │ │ :6379 │
└─────────┘ └──────────┘ └─────────┘
use Kode\Process\Channel\Client;
Client::connect('192.168.1.100', 2206);
Client::on('broadcast', function ($data) {
echo "收到广播: " . json_encode($data) . "\n";
});
Client::publish('broadcast', [
'type' => 'message',
'content' => 'Hello everyone!'
]);use Kode\Process\GlobalData\Client;
$client = new Client('192.168.1.100:2207');
$client->online_count = 0;
$client->increment('online_count', 1);
echo $client->online_count;use Kode\Process\GlobalData\Client;
$lock = new Client('192.168.1.100:2207');
$key = 'order_lock_123';
$lock->$key = time() + 10;
if ($lock->$key < time()) {
unset($lock->$key);
$lock->$key = time() + 10;
}use Kode\Process\Kode;
Kode::worker('http://0.0.0.0:8080', 4)
->onMessage(function ($conn, $request) {
Kode::go(function () use ($conn) {
$result = fetchDataFromApi();
$conn->send(json_encode($result));
});
})
->start();
// 批量处理
$results = Kode::batch([1, 2, 3, 4, 5], fn($i) => $i * 2, 3);use Kode\Process\Timer;
Timer::add(2.5, fn() => echo "每 2.5 秒执行\n");
Timer::once(10, fn() => echo "10 秒后执行一次\n");
Timer::cron('* * * * *', fn() => echo "每分钟执行\n");use Kode\Process\Broadcast\Broadcaster;
$broadcaster = Broadcaster::getInstance();
$broadcaster->broadcast('全局消息');
$broadcaster->broadcastToGroup('room_1', '群组消息');
$broadcaster->sendToUid('user_123', '私人消息');use Kode\Process\Queue\QueueManager;
QueueManager::getInstance()
->register('send_email', function (array $data) {
mail($data['to'], $data['subject'], $data['body']);
return ['status' => 'sent'];
});
QueueManager::getInstance()->dispatch('send_email', [
'to' => 'user@example.com',
'subject' => 'Hello',
'body' => 'World'
]);use Kode\Process\Kode;
Kode::app([
'worker_count' => 4,
'ssl' => [
'local_cert' => '/path/to/cert.pem',
'local_pk' => '/path/to/key.pem',
]
])
->listen('ssl://0.0.0.0:443')
->onMessage(fn($conn, $data) => $conn->send('Secure response'))
->start();| 指标 | Kode Process | Workerman | 提升 |
|---|---|---|---|
| HTTP QPS | 55,000+ | 45,000+ | +22% |
| WebSocket 连接 | 120,000+ | 100,000+ | +20% |
| Fiber 创建 | 139,000/s | ~100,000/s | +39% |
| 内存/进程 | ~8MB | ~10MB | -20% |
详见 性能压测
src/
├── Kode.php # 静态入口类
├── Application.php # 应用主类
├── Version.php # 版本信息
├── Protocol/ # 协议系统
│ ├── ProtocolInterface.php
│ ├── HttpProtocol.php
│ ├── WebSocketProtocol.php
│ └── ...
├── Channel/ # Channel 分布式通讯
│ ├── Server.php
│ └── Client.php
├── GlobalData/ # GlobalData 全局数据
│ ├── Server.php
│ └── Client.php
├── Broadcast/ # 广播系统
├── Queue/ # 队列系统
├── Worker/ # Worker 进程池
├── Master/ # Master 进程管理
├── Async/ # 异步工具
├── Compat/ # Workerman 兼容层
└── ...
./vendor/bin/phpunitApache License 2.0