crazygoat / octophpus
PHP 7.1+ 的异步 esi:include 过滤器
0.4.1
2017-06-24 05:02 UTC
Requires
- php: ~7.1
- guzzlehttp/guzzle: ^6.2
- nunzion/php-expect: ~1.1.0
- psr/cache: ^1.0
- psr/http-message: ^1.0
- psr/log: ^1.0
Requires (Dev)
- phpunit/phpunit: >6.0
- squizlabs/php_codesniffer: ^3.0
- tedivm/stash: ^0.14.2
Suggests
- ext-curl: *
README
Octophpus
PHP 7.1+ 的异步 ESI 过滤器。它扫描字符串中的 esi:include
标签,并用远程内容替换。它是对 Varnish 服务器进行 ESI 内容包含的简单替换。杀手级功能是所有请求都是异步的,所以它应该比 Varnish 更快。
注意,这个版本只是一个概念验证。对于生产实现,请等待 Octophpus 0.5。
要求
- PHP 7.1
- Guzzle 6
- PHP 的 cURL 扩展。 Octopus 可以在没有 cURL 的情况下运行,但多个请求将无法工作
安装
推荐通过 Composer 安装 Octophpus。
php composer.phar require crazygoat/octophpus
要升级到最新版本,请执行
php composer.phar update crazygoat/octophpus
示例代码
include_once "../vendor/autoload.php"; $text = '<esi:include src="http://crazy-goat.com/"/>'; $octophpus = new \CrazyGoat\Octophpus\EsiTentacles(); echo $octophpus->decorate($text);
限制
- Octophpus 仅处理 ESI 规范中的
esi:include
。 - 所有
esi:include
标签都必须包含src
属性中的完整 URI。URI 必须 包含协议、域名和路径。见下文。 - 如果数据字符串包含两个或多个具有相同
src
的esi:include
标签,Octophpus 将发出多个请求。
ESI 标签格式
Octophpus 并不涵盖完整的 ESI RFC 规范。它还添加了一些不属于 RFC 的 esi:include
参数。
有效的最小 esi:include
格式如下
<esi:include src="http://crazy-goat.com/"/> ^ ^ ^ 1 2 3
esi:include
标签名称,不区分大小写。src
必须包含完整的 URI。- 标签必须以
/>
结尾。如<esi:include ... ></esi:include>
这样的标签将无法工作
多行标签将工作,因此如果您想传递更多参数,可以将它们拆分成多行
<esi:include src="http://crazy-goat.com/" />
路线图
近期要添加的功能列表。 此列表未排序。
- 新功能
- 添加缓存 - 使用 PSR-7 缓存接口
- 添加超时时的 hxInclude 选项
- 添加传递请求头(例如 cookies、x-forwarded-proto)的选项
- 添加周期性 ESI 请求
- 部署和维护
- 准备路线图票据,并删除此内容
- Travis - 运行测试
- 文档和示例
- 创建超级无敌的标志
- 添加更好的文档
- 添加更多示例
- 添加基本测试