CdnClient

CdnClient是CDN服务的客户端,为开发者与CDN服务进行交互提供了一系列的方法。

新建CdnClient

通过AK/SK方式访问CDN

通过AK/SK方式访问CDN,用户可以参考如下代码新建一个CdnClient:

在新建CdnClient之前,需要先创建配置文件对CdnClient进行配置,以下将此配置文件命名为YourConf.php,具体配置信息如下所示:

// 报告所有 PHP 错误
    error_reporting(-1);
    define('CDN_CLIENT_ROOT', dirname(__DIR__));
    // 设置CdnClient的Access Key ID、Secret Access Key和ENDPOINT
    $g_CDN_TEST_CONFIG =
    array(
        'credentials' => array(
            'accessKeyId' => 'your ak',
            'secretAccessKey' => 'your sk',
        ),
        'endpoint' => 'http://cdn.baidubce.com',
    );
    // 设置log的格式和级别
    $__handler = new \Monolog\Handler\StreamHandler(STDERR, \Monolog\Logger::DEBUG);
    $__handler->setFormatter(
    new \Monolog\Formatter\LineFormatter(null, null, false, true)
    );
    \BaiduBce\Log\LogFactory::setInstance(
    new \BaiduBce\Log\MonoLogFactory(array($__handler))
    );
    \BaiduBce\Log\LogFactory::setLogLevel(\Psr\Log\LogLevel::DEBUG);

在上面代码中,变量AK与SK是由系统分配给用户的,均为字符串,用于标识用户,为访问CDN做签名验证。其中ak对应控制台中的“Access Key ID”,SK对应控制台中的“Access Key Secret”,获取方式请参考《操作指南 管理ACCESSKEY》。

创建CdnClient

在完成上述配置之后,参考如下代码新建一个CdnClient。

include 'BaiduBce.phar';
    require 'YourConf.php';
    use BaiduBce\BceClientConfigOptions;
    use BaiduBce\Util\Time;
    use BaiduBce\Util\MimeTypes;
    use BaiduBce\Http\HttpHeaders;
    use BaiduBce\Services\Cdn\CdnClient;
    //调用配置文件中的参数
    global $g_CDN_TEST_CONFIG;
    //新建CdnClient
    $client = new CdnClient($CDN_TEST_CONFIG);

新建加速域名

如下代码可以新建一个加速域名:

$domain = "test.domain.com";
    $origins = array(
    array("peer" => "test.origin.domain.com"),    // 源站为域名
    array("peer" => "111.222.111.222")    // 源站为IP,不能同时存在
    );
    $resp = $client->createDomain($domain, $origins);
    print_r($resp);

注意:由于加速域名在所有区域中是唯一的,所以需要保证domain不与其他所有区域上的加速域名名称相同。

查看加速域名列表

如下代码可以列出用户所有的域名:

$resp = $client->listDomains();
    print_r($resp);

删除加速域名

如下代码可以删除一个加速域名:

$domain = "test.domain.com";
    $resp = $client->deleteDomain($domain);
    print_r($resp);

启动域名加速服务

$domain = "test.domain.com";
    $resp = $client->enableDomain($domain);
    print_r($resp);

停止域名加速服务

$domain = "test.domain.com";
    $resp = $client->disableDomain($domain);
    print_r($resp);

加速域名配置

获取加速域名配置

$domain = "test.domain.com";
    $resp = $client->getDomainConfig($domain);
    print_r($resp);

设置回源地址

$domain = "test.domain.com";
    $origins = array(
    // 回源地址test.origin-new.domain.com,回源Host www.origin-host.com
    array(
        "peer" => "test.origin-new.domain.com",
        "host" => "www.origin-host.com"
    ),
    array(
        "peer" => "12.34.56.78",
        "host" => "www.origin-host.com"
    ) // 不能同时存在
    );
    $resp = $client->setDomainOrigin($domain, $origins);
    print_r($resp);

设置缓存策略

$domain = "test.domain.com";
    $rules = array(
        // .jpg后缀缓存一小时
        array(
            "type" => "suffix",
            "value" => ".jpg",
            "ttl" => 3600,
            "weight" => 30,
        ),
        // /a/b/c/目录下所有文件缓存1800秒
        array(
            "type" => "path",
            "value" => "/a/b/c",
            "ttl" => 1800,
            "weight" => 15,
        )
    );
    $resp = $client->setDomainCacheTTL($domain, $rules);
    print_r($resp);

设置全url缓存

$domain = "test.domain.com";
    // flag为true,表示带参数缓存
    $flag = true;
    $resp = $client->setDomainCacheFullUrl($domain, $flag);
    print_r($resp);

获取缓存策略配置

$domain = "test.domain.com";
    $resp = $client->getDomainCacheTTL($domain);
    print_r($resp);

设置访问Referer控制

$domain = "test.domain.com";
    $aclList = array(
        "http://your.black.list1",
        "http://your.black.list2"
    );
    $flag = "black";
    $allowEmpty=true;
    $resp = $this->client->setDomainRefererAcl($domain, $flag, $allowEmpty, $aclList);
    print_r($resp);

设置访问Ip控制

$domain = "test.domain.com";
    $aclList = array(
        "1.2.3.4",
        "5.6.7.8"
    );
    $flag = "white";
    $resp = $this->client->setDomainRefererAcl($domain, $flag, $aclList);
    print_r($resp);

设置单链接限速

$domain = "test.domain.com";
    // 单位为Bytes
    $rate = 1024;
    $resp = $client->setDomainLimitRate($domain, $rate);
    print_r($resp);

缓存管理

预热缓存

$tasks = array(
        array(
            'url' => 'http://my.accelerate.domain/path/to/file'
        )
    );
    $resp = $client->prefetch($tasks);
    // 根据预热任务id查询预热结果
    $resp = $client->listPrefetchStatus($resp->id);
    print_r($resp);

查询预热结果

$url = 'http://your.domain.com/1.jpg';
    $startTime = "2016-10-07T16:00:00Z";
    $endTime = "2016-10-07T18:00:00Z";
    $resp = $client->listPrefetchStatus('', $url, $startTime, $endTime);
    print_r($resp);

在查询预热结果时,既可以采用上述传递url、开始和结束时间的方法,也可以直接传递提交预热任务时返回的id。

刷新缓存

$tasks = array(
        array(
            'url' => 'http://my.accelerate.domain/path/to/file',
        ),
        array(
            'url' => 'http://my.accelerate.domain/path/to/directory/',
            'type' => 'directory',
        ),
    );
    $resp = $client->purge($tasks);
    // 根据刷新任务id查询刷新结果
    $resp = $client->listPurgeStatus($resp->id);
    print_r($resp);

刷新支持url刷新和目录刷新两种不同的刷新方法,当使用目录刷新时,需要传入type字段为directory。

查询刷新结果

$url = 'http://your.domain.com/1.jpg';
    $startTime = "2016-10-07T16:00:00Z";
    $endTime = "2016-10-07T18:00:00Z";
    $resp = $client->listPurgeStatus('', $url, $startTime, $endTime);
    print_r($resp);

查询刷新预热每日限额

$resp = $client->listQuota();
print_r($resp);

统计与日志接口

在统计接口中,所有的输入和输出时间都是UTC时间。

查询域名pv

$domain = 'test.domain.com';
    $startTime = '2016-10-07T16:00:00Z';
    $endTime = '2016-10-08T09:43:00Z';
    // 统计时间粒度,单位为秒
    $period = 300;
    $withRegion = 'true';
    $resp = $client->getDomainPvStat($domain, $startTime, $endTime, $period, $withRegion);

注意:

  1. 当不指定domainName的时候,查询返回的结果为用户所有加速域名的pv统计之和。
  2. 当携带withRegion参数请求时,返回的是分地区运营商的统计信息。

查询域名流量

$domain = 'test.domain.com';
    $startTime = '2016-10-07T16:00:00Z';
    $endTime = '2016-10-08T09:43:00Z';
    // 统计时间粒度,单位为秒
    $period = 300;
    $withRegion = 'true';
    $resp = $client->getDomainFlowStat($domain, $startTime, $endTime, $period, $withRegion);

注意:

  1. 当不指定domainName的时候,查询返回的结果为用户所有加速域名的流量统计之和。
  2. 当携带withRegion参数请求时,返回的是分地区运营商的统计信息。

查询域名回源流量

$domain = 'test.domain.com';
    $startTime = '2016-10-07T16:00:00Z';
    $endTime = '2016-10-08T09:43:00Z';
    // 统计时间粒度,单位为秒
    $period = 300;
    $resp = $client->getDomainSrcFlowStat($domain, $startTime, $endTime, $period);

注意: 当不指定domainName的时候,查询返回的结果为用户所有加速域名的状态码统计之和。

查询域名状态码统计

$domain = 'test.domain.com';
    $startTime = '2016-10-07T16:00:00Z';
    $endTime = '2016-10-08T09:43:00Z';
    // 统计时间粒度,单位为秒
    $period = 300;
    $withRegion = 'true';
    $resp = $client->getDomainHttpCodeStat($domain, $startTime, $endTime, $period, $withRegion);

注意:

  1. 当不指定domainName的时候,查询返回的结果为用户所有加速域名的流量统计之和。
  2. 当携带withRegion参数请求时,返回的是分地区运营商的统计信息。

查询域名命中率

$domain = 'test.domain.com';
    $startTime = '2016-10-07T16:00:00Z';
    $endTime = '2016-10-08T09:43:00Z';
    // 统计时间粒度,单位为秒
    $period = 300;
    $resp = $client->getDomainHitRateStat($domain, $startTime, $endTime, $period);

注意: 当不指定domainName的时候,查询返回的结果为用户所有加速域名的命中率的平均值。

查询过去域名访次数Top 100的url

$domain = 'test.domain.com';
    $startTime = '2016-10-07T16:00:00Z';
    $endTime = '2016-10-08T09:43:00Z';
    // 统计时间粒度,单位为秒,只支持1小时粒度
    $period = 3600;
    $resp = $client->getDomainTopUrlStat($domain, $startTime, $endTime, $period);

注意: 当不指定domainName的时候,查询返回的结果为用户所有加速域名的统计汇总

查询过去域名访次数Top 100的referer

$domain = 'test.domain.com';
    $startTime = '2016-10-07T16:00:00Z';
    $endTime = '2016-10-08T09:43:00Z';
    // 统计时间粒度,单位为秒,只支持1小时粒度
    $period = 3600;
    $resp = $client->getDomainTopRefererStat($domain, $startTime, $endTime, $period);

注意: 当不指定domainName的时候,查询返回的结果为用户所有加速域名的统计汇总

查询域名平均速率

$domain = 'test.domain.com';
    $startTime = '2016-10-07T16:00:00Z';
    $endTime = '2016-10-08T09:43:00Z';
    // 统计时间粒度,单位为秒
    $period = 300;
    $resp = $client->getDomainAvgSpeedStat($domain, $startTime, $endTime, $period);

注意: 当不指定domainName的时候,查询返回的结果为用户所有加速域名的平均速率的均值。

查询域名的独立访问次数

$domain = 'test.domain.com';
    $startTime = '2016-10-07T16:00:00Z';
    $endTime = '2016-10-08T09:43:00Z';
    // 统计时间粒度,单位为秒,只支持1小时粒度
    $period = 3600;
    $resp = $client->getDomainUvStat($domain, $startTime, $endTime, $period);

注意: 当不指定domainName的时候,查询返回的结果为用户所有加速域名的独立访问次数之和。

获取访问日志

$domain = "test.domain.com";
    $startTime = "2016-10-07T16:00:00Z";
    $endTime = "2016-10-07T18:00:00Z";
    $resp = $client->getDomainLog($domain, $startTime, $endTime);