redirectionio/proxy-sdk

此包已被弃用且不再维护。没有建议的替代包。

redirection.io 代理的 PHP 公共代码

v0.4.0 2019-11-07 07:38 UTC

This package is auto-updated.

Last update: 2021-04-27 08:27:50 UTC


README

[已弃用]:此库已弃用,将不再维护。它不与redirection.io 代理当前版本兼容,而只与旧 1.x 分支兼容。我们建议您迁移并使用推荐的集成之一

redirection.io 是一个用于跟踪 HTTP 错误和设置有用 HTTP 重定向的工具。它监听您的网站 HTTP 流量,并记录每个 HTTP 错误,以便您可以检查项目的重定向规则是否有效应用。

快速演示(下面有详细信息)

$client = new RedirectionIO\Client\Sdk\Client($projectKey, $connections);
$request = new RedirectionIO\Client\Sdk\HttpMessage\Request(
    $_SERVER['HTTP_HOST'],
    $_SERVER['REQUEST_URI'],
    $_SERVER['HTTP_USER_AGENT'],
    $_SERVER['HTTP_REFERER']
);

$response = $client->request(new RedirectionIO\Client\Sdk\Command\MatchWithResponseCommand($request));

// There are no redirection for this Request
if (null === $response) {
    $response = '...'; // Handle your request with your application
}

$client->request(new RedirectionIO\Client\Sdk\Command\LogCommand($request, $response));

// Finally, Returns your response

要求

安装

要在项目中使用 redirection.io,请将其添加到您的 composer.json 文件中

$ composer require redirectionio/proxy-sdk

用法

实例化客户端

开始之前,您需要实例化一个新的客户端。

use RedirectionIO\Client\Sdk\Client;

$client = new Client(string $projectKey, array $connections, int $timeout = 10000, bool $debug = false, LoggerInterface $logger = null);

参数

  • $projectKey 项目密钥(可在 redirection.io 控制台中找到)
    $projectKey = 'szio2389-bfdz-51e8-8468-02dcop129501:ep6a4805-eo6z-dzo6-aeb0-8c1lbmo40242';
  • $connections 连接到代理的连接参数数组
    $connections = [
        'connection_tcp' => 'tcp://127.0.0.1:10301',
        'connection_unix' => 'unix:///var/run/redirectionio_agent.sock',
    ];
  • $timeout 连接/请求的超时时间(微秒)
  • $debug 启用或禁用调试模式。在调试模式下,如果发生错误,会抛出异常,否则会静默处理所有错误;
  • \Psr\Log\LoggerInterface $logger 日志记录器。

检查是否存在重定向规则

检查请求 URI 是否匹配代理中的重定向规则。如果是,则返回一个 RedirectResponse,否则返回 null

use RedirectionIO\Client\Sdk\Client;
use RedirectionIO\Client\Sdk\HttpMessage\Request;
use RedirectionIO\Client\Sdk\Command\MatchCommand;

$client->request(new MatchWithResponseCommand(Request $request);

参数

  • \RedirectionIO\Client\Sdk\HttpMessage\Request $request.

返回值

  • \RedirectionIO\Client\Sdk\HttpMessage\RedirectResponse $response 如果代理已找到当前请求 URI 的重定向规则;
  • null 如果代理中没有为当前 URI 设置重定向规则。

检查旧代理(<1.4.0)中是否存在重定向规则

检查请求 URI 是否匹配代理中的重定向规则。如果是,则返回一个 RedirectResponse,否则返回 null

如果规则应该针对响应状态码进行匹配,它也会返回 null。这主要是为了向后兼容,并避免旧代理处理它不应该处理的规则。

use RedirectionIO\Client\Sdk\Client;
use RedirectionIO\Client\Sdk\HttpMessage\Request;
use RedirectionIO\Client\Sdk\Command\MatchCommand;

$client->request(new MatchCommand(Request $request);

参数

  • \RedirectionIO\Client\Sdk\HttpMessage\Request $request.

返回值

  • \RedirectionIO\Client\Sdk\HttpMessage\RedirectResponse $response 如果代理已找到当前请求 URI 的重定向规则;
  • null 如果代理中没有为当前 URI 设置重定向规则。

记录请求/响应对

允许您记录每个请求的请求/响应对。

use RedirectionIO\Client\Sdk\Client;
use RedirectionIO\Client\Sdk\Command\LogCommand;
use RedirectionIO\Client\Sdk\HttpMessage\Response;
use RedirectionIO\Client\Sdk\HttpMessage\Request;

$client->request(new LogCommand(Request $request, Response $response));

参数

  • \RedirectionIO\Client\Sdk\HttpMessage\Response $request
  • \RedirectionIO\Client\Sdk\HttpMessage\Request $response

返回值

  • bool 如果成功添加日志,则为 true,否则为 false

贡献

我们负责所有新的PR。任何贡献都欢迎 :) 感谢。

安装

$ composer install

运行测试

$ composer test