Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Cache/OpCache.php
Строк: 104
<?php

namespace ConcreteCoreCache;

/**
 * Manages opcaches.
 */
class OpCache
{
    
/**
     * Clear the opcache.
     *
     * @param string|null $file If it's specified, we'll try to clear the cache only for this file
     */
    
public static function clear($file null)
    {
        if (static::
hasEAccelerator()) {
            if (
function_exists('eeaccelerator_clear')) {
                
$paths = @ini_get('eaccelerator.allowed_admin_path');
                if (
is_string($paths) && ($paths !== '')) {
                    
$myPath str_replace(DIRECTORY_SEPARATOR'/'__DIR__);
                    foreach (
explode(PATH_SEPARATOR$paths) as $path) {
                        
$path str_replace(DIRECTORY_SEPARATOR'/'$path);
                        if (
$path !== '') {
                            
$path rtrim($path'/');
                            if ((
$path === $myPath) || (strpos($myPath$path.'/') === 0)) {
                                @
eeaccelerator_clear();
                                break;
                            }
                        }
                    }
                }
            }
        }
        if (static::
hasAPC()) {
            if (
function_exists('apc_clear_cache')) {
                @
apc_clear_cache('system');
            }
        }
        if (static::
hasXCache()) {
            if (
function_exists('xcache_clear_cache') && ini_get('xcache.admin.user') && ini_get('xcache.admin.pass')) {
                @
xcache_clear_cache(XC_TYPE_PHP0);
            }
        }
        if (static::
hasWinCache()) {
            if (
function_exists('wincache_refresh_if_changed')) {
                if (
$file) {
                    @
wincache_refresh_if_changed((array) $file);
                } else {
                    @
wincache_refresh_if_changed();
                }
            }
        }
        if (static::
hasZendOpCache()) {
            if (
$file && function_exists('opcache_invalidate')) {
                @
opcache_invalidate($filetrue);
            } elseif (
function_exists('opcache_reset')) {
                @
opcache_reset();
            }
        }
    }

    
/**
     * Is eAccelerator installed and enabled?
     *
     * @return bool
     */
    
public static function hasEAccelerator()
    {
        return 
extension_loaded('eaccelerator') && ini_get('eaccelerator.enable');
    }

    
/**
     * Is Alternative PHP Cache (APC) installed and enabled?
     *
     * @return bool
     */
    
public static function hasAPC()
    {
        return 
extension_loaded('apc') && ini_get('apc.enabled');
    }

    
/**
     * Is XCache installed and enabled?
     *
     * @return bool
     */
    
public static function hasXCache()
    {
        return 
extension_loaded('xcache') && ini_get('xcache.cacher') && (ini_get('xcache.size') !== 0) && (ini_get('xcache.size') !== '0');
    }

    
/**
     * Is WinCacne installed and enabled?
     *
     * @return bool
     */
    
public static function hasWinCache()
    {
        return 
extension_loaded('wincache') && ini_get('wincache.ocenabled');
    }

    
/**
     * Is Zend OPCache installed and enabled?
     *
     * @return bool
     */
    
public static function hasZendOpCache()
    {
        return 
extension_loaded('Zend OPcache') && ini_get('opcache.enable');
    }
}
Онлайн: 0
Реклама