tourze/proxy-protocol-core
Composer 安装命令:
composer require tourze/proxy-protocol-core
包简介
A PHP core library for parsing and generating Proxy Protocol. Supports both V1 (text format) and V2 (binary format) versions.
README 文档
README
A PHP core library for parsing and generating Proxy Protocol. Supports both V1 (text format) and V2 (binary format) versions of the protocol with comprehensive data structures and parsing capabilities.
Features
- Full Protocol Support: Complete implementation of Proxy Protocol V1 (text format) and V2 (binary format)
- Type Safety: Extensive use of PHP 8.1+ enums and type hints for safer protocol constant usage
- Exception Handling: Dedicated exception classes for protocol parsing errors
- Interface-Driven Design: Common interface for all protocol versions ensuring consistency
- Comprehensive Address Support: Support for IPv4, IPv6, and Unix socket addresses
- PSR Compliance: Follows PSR-4 autoloading and PSR-12 coding standards
Requirements
- PHP 8.1 or higher
- tourze/enum-extra package for enhanced enum functionality
Installation
composer require tourze/proxy-protocol-core
Quick Start
Proxy Protocol V1 (Text Format)
<?php use Tourze\ProxyProtocol\Enum\Version; use Tourze\ProxyProtocol\Model\Address; use Tourze\ProxyProtocol\Model\V1Header; // Create a V1 header $header = new V1Header(); $header->setVersion(Version::V1); $header->setProtocol('TCP4'); $header->setSourceAddress(new Address('192.168.1.1', 12345)); $header->setTargetAddress(new Address('192.168.1.2', 80)); // Generate protocol string $protocolString = $header->toProtocolString(); echo $protocolString; // PROXY TCP4 192.168.1.1 192.168.1.2 12345 80\r\n
Proxy Protocol V2 (Binary Format)
<?php use Tourze\ProxyProtocol\Enum\AddressFamily; use Tourze\ProxyProtocol\Enum\Command; use Tourze\ProxyProtocol\Enum\Version; use Tourze\ProxyProtocol\Model\V2Header; // Create a V2 header $header = new V2Header(); $header->setVersion(Version::V2); $header->setCommand(Command::PROXY); $header->setAddressFamily(AddressFamily::TCP4); $header->setSourceAddress('192.168.1.1'); $header->setSourcePort(12345); $header->setTargetAddress('192.168.1.2'); $header->setTargetPort(80); // Generate binary protocol data $binaryData = $header->constructProxyHeader(); // Parse a V2 header from binary data $parsedHeader = V2Header::parseHeader($binaryData);
Exception Handling
<?php use Tourze\ProxyProtocol\Exception\InvalidProtocolException; use Tourze\ProxyProtocol\Exception\UnsupportedProtocolException; use Tourze\ProxyProtocol\Model\V2Header; try { $header = V2Header::parseHeader($invalidData); } catch (InvalidProtocolException $e) { echo "Invalid protocol data: " . $e->getMessage(); } catch (UnsupportedProtocolException $e) { echo "Unsupported protocol version: " . $e->getMessage(); }
API Documentation
Enumerations
Version: Protocol version (V1, V2)Command: V2 protocol command (PROXY, LOCAL)AddressFamily: Address family and transport protocol combinationsTCP4: IPv4 over TCPUDP4: IPv4 over UDPTCP6: IPv6 over TCPUDP6: IPv6 over UDPUNIX_STREAM: Unix socket with streamUNIX_DGRAM: Unix socket with datagramUNSPECIFIED: Unspecified protocol
Models
HeaderInterface: Common interface for all protocol headersV1Header: Proxy Protocol V1 implementationV2Header: Proxy Protocol V2 implementationAddress: Address/port pair representation
Exceptions
InvalidProtocolException: Thrown when protocol data is malformedUnsupportedProtocolException: Thrown when protocol version is not supported
Contributing
Please see CONTRIBUTING.md for details on how to contribute to this project.
License
The MIT License (MIT). Please see License File for more information.
References
tourze/proxy-protocol-core 适用场景与选型建议
tourze/proxy-protocol-core 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 146 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 04 月 16 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 tourze/proxy-protocol-core 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 tourze/proxy-protocol-core 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 146
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 6
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-04-16