Akamai快速清除使用PHP 5.3

问题描述:

如何清除使用PHP 5.3的Akamai缓存?
Akamai Github为PHP 5.6+提供的代码正在工作。但是在Akamai Github页面为php 5.3提供的代码给出错误。Akamai快速清除使用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';
//Fatal error: Class 'Akamai\Open\EdgeGrid\Exception' not found in \src\Exception\ConfigException.php on line 22 require_once 'src/Exception/SignerException/InvalidSignDataException.php'‌​;
//Fatal error: Class 'Akamai\Open\EdgeGrid\Exception\SignerException' not found in \src\Exception\SignerException\InvalidSignDataException.php on line 22

+0

什么错误?请显示你的代码。 – Barmar

+0

错误行标记为'//' 'require_once'src/Authentication.php'; require_once'src/Authentication/Timestamp.php'; require_once'src/Authentication/Nonce.php'; require_once'src/Exception/ConfigException.php'; require_once'src/Exception/ConfigException.php'; //致命错误:在'src \ Exception \ ConfigException.php中找不到'Class Akamai \ Open \ EdgeGrid \ Exception'行22 require_once'src/Exception/SignerException/InvalidSignDataException.php'; //致命错误:未在\ src \ Exception中找到类'Akamai \ Open \ EdgeGrid \ Exception \ SignerException'第22行上的异常\ SignerException \ InvalidSignDataException.php – modellita

+1

将详细信息放在问题中。 – Barmar

有两种例外情况从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')); 
+0

是的,错误消失了。 下一步是什么? – modellita

+0

@modellita我已经更新了答案,包括完整的CCUv3快速清除呼叫。 –