fxlrpc/序列化

FXMLRPC 的序列化逻辑

0.2.0 2018-02-11 12:18 UTC

This package is auto-updated.

Last update: 2024-09-19 09:10:33 UTC


README

Latest Version Software License Build Status Code Coverage Quality Score Total Downloads

FXMLRPC 的序列化逻辑。

安装

通过 Composer

$ composer require fxmlrpc/serialization

用法

这是 FXMLRPC 中使用的序列化逻辑的合同包。

目前有以下实现可用

  • 本地:使用 XML-RPC 扩展
  • XML 读取器:使用位掩码的自定义 XML 读取逻辑
  • Zend 框架适配器

它真的有多快?

从用户空间的角度来看,I/O 性能难以达到,但解析和序列化速度才是关键。我们能否快速从 PHP 数据结构生成 XML 负载,以及我们能否快速解析服务器的响应?FXMLRPC 使用基于流的 XML 写入器/读取器来实现其性能,并对它进行了大量优化(可读性较差)。因此,用户空间的版本仅比本地 C 实现慢约 2 倍(ext/xmlrpc)。

8 subjects, 80 iterations, 320 revs, 0 rejects
min mean max: 11,497.750 118,279.634 339,007.500 (μs/r)
⅀T: 37,849,483.000μs μSD/r 5,275.433μs μRSD/r: 6.047%

+-----------------+-----------------------+-------+------+-----+-------------+----------------+----------------+----------------+---------------+--------+
| benchmark       | subject               | group | revs | its | mem         | min            | mean           | max            | stdev         | rstdev |
+-----------------+-----------------------+-------+------+-----+-------------+----------------+----------------+----------------+---------------+--------+
| ParserBench     | benchNativeParser     |       | 40   | 10  | 15,644,120b | 118,311.2500μs | 123,752.2250μs | 127,034.7500μs | 2,196.4803μs  | 1.77%  |
| ParserBench     | benchSaxParser        |       | 40   | 10  | 15,594,984b | 144,438.0000μs | 149,607.9000μs | 157,309.2500μs | 3,892.3376μs  | 2.60%  |
| ParserBench     | benchZendParser       |       | 40   | 10  | 56,321,216b | 278,974.5000μs | 287,957.9750μs | 317,007.5000μs | 10,655.0098μs | 3.70%  |
| SerializerBench | benchNativeSerializer |       | 40   | 10  | 12,420,416b | 11,497.7500μs  | 12,464.6500μs  | 15,255.5000μs  | 1,416.8554μs  | 11.37% |
| SerializerBench | benchSaxSerializer    |       | 40   | 10  | 15,460,152b | 22,643.2500μs  | 24,231.8250μs  | 26,539.7500μs  | 1,411.6560μs  | 5.83%  |
| SerializerBench | benchZendSerializer   |       | 40   | 10  | 15,671,376b | 21,832.5000μs  | 24,071.2500μs  | 28,176.2500μs  | 1,948.6380μs  | 8.10%  |
+-----------------+-----------------------+-------+------+-----+-------------+----------------+----------------+----------------+---------------+--------+

运行 ./vendor/bin/phpbench run --report=custom 以执行基准测试套件。

Zend 不兼容列表

Zend 与其他序列化器和解析器不完全兼容。

解析器不兼容

  • 自动解码 Base64 编码的值
  • 不返回 DateTime 对象
  • 不能返回空 DateTime 值
  • 不支持 Apache Nil
  • 错误地检测无效的多参数
  • 不能解析包含 XXE 攻击 的响应

序列化器不兼容

  • 如果没有传递参数,则不生成空参数标签
  • 与 xmlrpc 扩展不同,Zend 不会添加 换行符

测试

$ composer test

安全

如果您发现任何与安全相关的问题,请通过 security@fxmlrpc.org 联系我们。

致谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件