示例#1
0
 /**
  * Invalidate objects in a CloudFront distribution
  *
  * Thanks to Martin Lindkvist for S3::invalidateDistribution()
  *
  * @param string $distributionId Distribution ID from listDistributions()
  * @param array $paths Array of object paths to invalidate
  * @return boolean
  */
 public static function invalidateDistribution($distributionId, $paths)
 {
     if (!extension_loaded('openssl')) {
         self::__triggerError(sprintf("S3::invalidateDistribution(): [%s] %s", "CloudFront functionality requires SSL"), __FILE__, __LINE__);
         return false;
     }
     $useSSL = self::$useSSL;
     self::$useSSL = true;
     // CloudFront requires SSL
     $rest = new S3Request('POST', '', '2010-08-01/distribution/' . $distributionId . '/invalidation', 'cloudfront.amazonaws.com');
     $rest->data = self::__getCloudFrontInvalidationBatchXML($paths, (string) microtime(true));
     $rest->size = strlen($rest->data);
     $rest = self::__getCloudFrontResponse($rest);
     self::$useSSL = $useSSL;
     if ($rest->error === false && $rest->code !== 201) {
         $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status');
     }
     if ($rest->error !== false) {
         trigger_error(sprintf("S3::invalidate('{$distributionId}',{$paths}): [%s] %s", $rest->error['code'], $rest->error['message']), E_USER_WARNING);
         return false;
     }
     return true;
 }