将 PHP 应用接入 AHAS 应用防护后,可以对其配置流控、降级和系统规则来保证系统稳定性。本文将帮助您了解如何使用 SDK 方式将 PHP 应用接入应用防护。

前提条件

目前仅支持 Linux 64 位环境,请确保您的 PHP 版本 ≥ 7.0 或者 ≥ 5.5 并通过 composer 管理依赖。
  1. 登录 AHAS 控制台,然后在页面左上角选择地域
  2. 在控制台左侧导航栏中选择流量防护 > 应用防护
  3. 应用接入页面右上角单击新应用接入,然后选择 PHP > SDK 接入 > 自定义埋点
  4. 自定义埋点页面查看并保存 License(非公网地域不需要)。
    PHP license
  5. 自定义埋点单击下载 AHAS Sentinel Sidecar,然后将压缩包解压到本地。
  6. 进入压缩包解压后的路径,然后执行以下命令启动 AHAS sidecar:
    //将 AppName 替换为自定义的应用名称。
    ./bin/start.sh AppName default
    //将 AppName 替换为自定义的应用名称,将 <license> 替换为真实值。
    ./bin/start.sh AppName default <license>

  7. 在您的 PHP 项目中添加 AHAS Sentinel 依赖:
    composer require ahas/sentinel dev-master --prefer-dist
    说明 通常需要在 PHP 源码文件头部引入 composer autoload 文件,以支持自动加载 PHP 类。
  8. 在代码中创建 SentinelClient 实例:
    // 创建 AHAS Sentinel 客户端,本地 sidecar 默认监听 9090 端口。
    $sentinel = new \Sentinel\SentinelClient("localhost", 9090);
  9. 使用以下代码包住您的业务逻辑:
    try {
      // 获取受保护的资源访问入口,参数为埋点资源名称。
      // 注意: 必须定义一个变量保存入口对象, 否则入口对象将被自动销毁并释放资源。
      $sentinelEntry = $sentinel->entry("your-resource-name");
    
      // 在此处编写受保护的业务逻辑。
    } catch (\Sentinel\BlockException $e) {
      // 被 Sentinel 流控,在此处编写流控处理逻辑,如提示用户请求过多。
    } finally {
        // 将保存入口对象的变量置为 null, 使不再有变量引用入口对象, 以销毁入口对象并释放资源。
        $sentinelEntry = null;
    }
  10. 重启您的 PHP 应用。

执行结果

启动应用并调用配置埋点的方法。若该应用出现在 AHAS 控制台流量防护 > 应用防护页面,且在该应用的监控详情页面有能看到配置埋点的方法,则说明接入成功。

相关操作

PHP SDK 目前支持流控规则、降级规则、隔离规则和系统规则: