OpCodeCache.php 947 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
<?php

/**
 * @file
 * Contains \Drupal\Component\Utility\OpCodeCache.
 */

namespace Drupal\Component\Utility;

/**
 * Provides helpers to handle PHP opcode caches.
 *
 * @ingroup utility
 */
class OpCodeCache {

  /**
   * Invalidates a PHP file from a possibly active opcode cache.
   *
   * In case the opcode cache does not support to invalidate an individual file,
   * the entire cache will be flushed.
   *
   * @param string $pathname
   *   The absolute pathname of the PHP file to invalidate.
   */
  public static function invalidate($pathname) {
    clearstatcache(TRUE, $pathname);

    if (extension_loaded('Zend OPcache')) {
      opcache_invalidate($pathname, TRUE);
    }
    if (extension_loaded('apc')) {
      // apc_delete_file() throws a PHP warning in case the specified file was
      // not compiled yet.
      // @see http://php.net/manual/en/function.apc-delete-file.php
      @apc_delete_file($pathname);
    }
  }

}