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.
- Simple common interface to purge contents against multiple CDNs and get purge status.
- Easily extensible to other CDN providers.
- Easy code maintenance.
- Requires PHP >= 5.5 compiled with cURL extension and cURL 7.16.2+ compiled with a TLS backend (e.g. NSS or OpenSSL).
- Uses Guzzle to make http rest api calls.
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.