Как очистить кеш Akamai с помощью php 5.3?
Код, предоставленный в Akamai Github для php 5.6+, работает. Но код, предоставленный на странице Akamai Github для php 5.3, дает ошибку.
Строки ошибок помечаются как «//»:
require_once ‘src / Authentication.php’;
require_once ‘src / Authentication / Timestamp.php’;
require_once ‘src / Authentication / Nonce.php’;
require_once ‘src / Exception / ConfigException.php’;
// Неустранимая ошибка: класс ‘Akamai \ Open \ EdgeGrid \ Exception’ не найден в \ src \ Exception \ ConfigException.php в строке 22 require_once ‘src / Exception / SignerException / InvalidSignDataException.php’;
// Неустранимая ошибка: класс ‘Akamai \ Open \ EdgeGrid \ Exception \ SignerException’ не найден в \ src \ Exception \ SignerException \ InvalidSignDataException.php в строке 22
Есть два исключения, отсутствующие в require
блок:
require_once 'src/Exception.php';
require_once 'src/Exception/SignerException.php';
Добавление этих должно исправить проблему.
Полный блок кода для очистки вы бы использовали:
$auth = \Akamai\Open\EdgeGrid\Authentication::createFromEdgeRcFile('ccuv3', './.edgerc');
$auth->setHttpMethod('POST');
$auth->setPath('/ccu/v3/invalidate/url');
$body = json_encode(array(
'hostname' => 'example.org',
'objects' => array('/path/to/object', '/path/to/other/object')
));
$auth->setBody($body);
$context = array(
'http' => array(
'header' => array(
'Authorization: ' . $auth->createAuthHeader(),
'Content-Type: application/json',
'Content-Length: ' . strlen($body),
),
'method' => 'POST',
'content' => $body
)
);
$context = stream_context_create($context);
$response = json_decode(file_get_contents('https://' . $auth->getHost() . $auth->getPath(), null, $context));
Еще лучше было бы обернуть это в функцию:
function fastPurge($hostname, array $objects)
{
$body = json_encode(array(
'hostname' => $hostname,
'objects' => $objects
));
$auth = \Akamai\Open\EdgeGrid\Authentication::createFromEdgeRcFile('ccuv3', './.edgerc');
$auth->setHttpMethod('POST');
$auth->setPath('/ccu/v3/invalidate/url');
$auth->setBody($body);
$context = array(
'http' => array(
'header' => array(
'Authorization: ' . $auth->createAuthHeader(),
'Content-Type: application/json',
'Content-Length: ' . strlen($body),
),
'method' => 'POST',
'content' => $body
)
);
$context = stream_context_create($context);
$response = json_decode(file_get_contents('https://' . $auth->getHost() . $auth->getPath(), null, $context));
}
// Call the fastPurge function
fastPurge('example.org', array('/path/to/object', '/path/to/other/object'));
Других решений пока нет …