Multi CDN purge control library for PHP
CdnPurge is a lightweight PHP CDN client which makes it easier to purge contents for
multiple CDN providers. Currently, CdnPurge supports AWS CloudFront
and Limelight.
The recommended way to install CdnPurge is through
Composer.
# Install Composer
curl -sS https://getcomposer.org/installer | php
Next, run the Composer command to install the latest stable version of CdnPurge:
composer.phar require sony/cdn-purge-control-php
After installing, you need to require Composer’s autoloader:
require 'vendor/autoload.php';
You can then later update CdnPurge using composer:
composer.phar update
<?php
// Require the Composer autoloader.
require 'vendor/autoload.php';
use CdnPurge\CdnPurgeFactory;
use CdnPurge\CdnType;
$config = array(
'cloudfront' => array(
'distribution_id' => 'your cloudfront distribution id'
),
'limelight' => array(
'shortname' => 'your limelight api shortname'
'publish_url' => 'your limelight publish url'
)
);
$credential = array(
'cloudfront' => array(
'key' => 'aws iam account access key id',
'secret' => 'aws iam account secret access key'
),
'limelight' => array(
'username' => 'limelight account username',
'shared_key' => 'limelight account shared key'
)
);
try {
// Make a purge request against AWS cloudfront
$cfClient = CdnPurgeFactory::build(CdnType::CLOUDFRONT, $credential, $config);
$cfRequestId = $client->createPurgeRequest(array(
'/my-path-1',
'/my-path-2'
));
// Make a purge request against Limelight
$llClient = CdnPurgeFactory::build(CdnType::LIMELIGHT, $credential, $config);
$llRequestId = $client->createPurgeRequest(array(
'http://my-limelight-domain/my-path-1',
'/my-path-2'
));
} catch (CdnPurge\CdnClientException $e) {
echo "An error occurred: " . $e->getMessage();
}
<?php
// Get the purge status
try {
$client->getPurgeStatus($requestId);
// 'InProgress' or 'Complete'
} catch (CdnPurge\CdnClientException $e) {
echo "There was an error getting purge status.\n";
}
See example for a running example of how to use this library.
Credentials are specified as an array.
Credential key | Type | Required | Description |
---|---|---|---|
cloudfront[‘key’] | String | Yes | AWS IAM user Access Key Id. See here for details |
cloudfront[‘secret’] | String | Yes | AWS IAM user Secret Access Key. See here for details |
Credential key | Type | Required | Description |
---|---|---|---|
limelight[‘username’] | String | Yes | Limelight account username |
limelight[‘shared_key’] | String | Yes | Limelight account share key |
Configurations are specified as an array.
Config key | Type | Required | Description |
---|---|---|---|
cloudfront[‘distribution_id’] | String | Yes | AWS CloudFront Distribution Id |
http[‘proxy’] | String | No | Specify http proxy for the client. For example: ‘my-company.proxy.com:1234’ |
Config key | Type | Required | Description |
---|---|---|---|
limelight[‘shortname’] | String | Yes | Limelight api shortname |
limelight[‘publish_url’] | String | No | Limelight publish url. This is prepended to the purge path if the path doesn’t start with ‘http’ or ‘https’ |
limelight[‘evict’] | Boolean | No | If true, matching cache objects are evicted (deleted), otherwise invalidated. Default is false |
limelight[‘exact’] | Boolean | No | If true, paths to be purged are treated as an exact public URL. Optional. Default is false. Default is false |
limelight[‘incqs’] | Boolean | No | If true, pattern is allowed to match query string part of URL, otherwise query string is stripped before matching. Default is false |
limelight[‘email’] | Array | No | Array of email info to send purge completion details to |
limelight[‘email’][‘subject’] | String | No | Subject of sent mail |
limelight[‘email’][‘to’] | String | Yes | Email recipient address. A comma is used to separate multiple recipients |
limelight[‘email’][‘cc’] | String | No | Email carbon copy. A comma is used to separate multiple recipients |
limelight[‘email’][‘bcc’] | String | No | Email blind carbon copy. A comma is used to separate multiple recipients |
limelight[‘callback’] | Array | No | HTTP(S) callback URL for purge request state transition notifications |
limelight[‘callback’][‘url’] | String | Yes | Callback url |
http[‘proxy’] | String | No | Specify http proxy for the client. For example: ‘my-company.proxy.com:1234’ |
The MIT License (MIT)
See LICENSE for details.