crazygoat/octophpus

PHP 7.1+ 的异步 esi:include 过滤器

0.4.1 2017-06-24 05:02 UTC

This package is auto-updated.

Last update: 2024-09-14 07:41:15 UTC


README

Build Status Coverage Status Scrutinizer Code Quality

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 必须 包含协议、域名和路径。见下文。
  • 如果数据字符串包含两个或多个具有相同 srcesi:include 标签,Octophpus 将发出多个请求。

ESI 标签格式

Octophpus 并不涵盖完整的 ESI RFC 规范。它还添加了一些不属于 RFC 的 esi:include 参数。

有效的最小 esi:include 格式如下

<esi:include src="http://crazy-goat.com/"/>
    ^          ^                         ^
    1          2                         3
  1. esi:include 标签名称,不区分大小写。
  2. src 必须包含完整的 URI。
  3. 标签必须以 /> 结尾。如 <esi:include ... ></esi:include> 这样的标签将无法工作

多行标签将工作,因此如果您想传递更多参数,可以将它们拆分成多行

<esi:include 
    src="http://crazy-goat.com/"
/>

路线图

近期要添加的功能列表。 此列表未排序。

  • 新功能
    • 添加缓存 - 使用 PSR-7 缓存接口
    • 添加超时时的 hxInclude 选项
    • 添加传递请求头(例如 cookies、x-forwarded-proto)的选项
    • 添加周期性 ESI 请求
  • 部署和维护
    • 准备路线图票据,并删除此内容
    • Travis - 运行测试
  • 文档和示例
    • 创建超级无敌的标志
    • 添加更好的文档
    • 添加更多示例
    • 添加基本测试