You are here

function purge_logging in Purge 6

Same name and namespace in other branches
  1. 7.2 includes/purge.inc \purge_logging()
  2. 7 purge.inc \purge_logging()

Logs successful purges and errors to the watchdog.

Parameters

$purge_request_results: array of url with their http status code

1 call to purge_logging()
purge_expire_cache in ./purge.module
Implementation of hook_expire_cache().

File

./purge.inc, line 155
Contains the main purging functionality and error handling

Code

function purge_logging($purge_request_results) {
  $purge_success = 0;
  $purge_blocking = array();
  $purge_success_log = array();
  $purge_error_log = array();
  foreach ($purge_request_results as $purge_request_result) {
    switch ($purge_request_result['http_code']) {

      // First check if everything went ok.
      case 200:
        $purge_success_log[] = $purge_request_result['purge_url'] . ' on ' . $purge_request_result['proxy_url'] . ' Ok';
        $purge_success++;
        break;

      // Redirects are acceptable
      case 301:
        $purge_success_log[] = $purge_request_result['purge_url'] . ' on ' . $purge_request_result['proxy_url'] . ' Permanent Redirect';
        $purge_success++;
        break;
      case 302:
        $purge_success_log[] = $purge_request_result['purge_url'] . ' on ' . $purge_request_result['proxy_url'] . ' Temporary Redirect';
        $purge_success++;
        break;

      // Notice if the request was not found in the proxy cache
      case 404:
        $purge_success_log[] = $purge_request_result['purge_url'] . ' on ' . $purge_request_result['proxy_url'] . ' Not Found';
        $purge_success++;
        break;

      // Collect all proxy hosts that are blocking the url requests
      case 405:
        $purge_error_log[] = $purge_request_result['purge_url'] . ' on ' . $purge_request_result['proxy_url'] . ' Forbidden';
        $purge_blocking[] = parse_url($purge_request_result['purge_url'], PHP_URL_HOST);
        break;

      // Collect all urls and their http error codes
      default:
        $purge_error_log[] = $purge_request_result['purge_url'] . ' on ' . $purge_request_result['proxy_url'] . ' ' . $purge_request_result['http_code'];
        break;
    }
  }

  // Watchdog barking
  $purge_errors = count($purge_request_results) - $purge_success;

  // Just a notice when all is ok
  if ($purge_errors === 0) {
    if ($purge_success === 1) {
      watchdog('purge', '1 URL has been successfully purged from the reverse proxy caches: !$purge_success_log', array(
        '!$purge_success_log' => purge_print_r($purge_success_log),
      ));
    }
    else {
      watchdog('purge', '!purge_success_count URLs have been successfully purged from the reverse proxy caches: !$purge_success_log', array(
        '!purge_success_count' => $purge_success,
        '!$purge_success_log' => purge_print_r($purge_success_log),
      ));
    }
  }
  else {

    // Report all urls with errors
    if ($purge_errors === 1) {
      watchdog('purge', '1 error has been encountered when purging URLs !$purge_error_log', array(
        '!$purge_error_log' => purge_print_r($purge_error_log),
      ), $severity = WATCHDOG_ERROR);
    }
    else {
      watchdog('purge', '!purge_errors_count errors have been encountered when purging these URLs. !$purge_error_log', array(
        '!purge_errors_count' => $purge_errors,
        '!$purge_error_log' => purge_print_r($purge_error_log),
      ), $severity = WATCHDOG_ERROR);
    }

    // Report on proxy servers that block the purge requests.
    if (!empty($purge_blocking)) {
      foreach ($purge_blocking as $purge_blocking_server) {
        watchdog('purge', 'The proxy server host %blocking_server is blocking purge requests. Please review the proxy configuration.', array(
          '%blocking_server' => $purge_blocking_server,
        ), $severity = WATCHDOG_ERROR);
      }
    }
  }
}