Данный материал предоставлен сайтом ProWebber.cc исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Скачать бесплатно Альтернатива файловому кешу, APC (Advanced PHP Cache).
Скачать бесплатно Альтернатива файловому кешу, APC (Advanced PHP Cache).
Описание: Данных хак заменяет систему кэширования DLE на более мощную и продвинутую APC
Автор: сущность
Конфиг PHP модуля:
установить желательно из СВН (Linux, FreeBSD, etc..):
Начинаем установку хака
1. Открыть файл engine/init.php
- найти
- добавить
$apc_cache = new cache_apc();
2. Открыть файл engine/modules/functions.php
Найти
заменить на
найти
заменить на
найти
заменить на
найти
заменить на
найти
заменить на
Содержание файла engineclassesAPC.php
P.S. Взято с 4dle.ru и если что то испортиться то я ответственности не несу ))
Автор: сущность
Конфиг PHP модуля:
extension=apc.so
apc.enabled=1
apc.shm_segments=1
apc.shm_size=256M; 256
apc.ttl=180
apc.user_ttl=120
apc.gc_ttl=120
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.rfc1867=1
apc.localcache=1
apc.file_update_protection=30
apc.include_once_override=1
apc.stat_ctime=1
apc.slam_defense=Off
;apc.lazy_classes=1
;apc.lazy_functions=1
установить желательно из СВН (Linux, FreeBSD, etc..):
svn co 'http://svn.php.net/repository/pecl/apc/trunk/' 'pecl-apc'
# whereis php-config
php-config: /usr/local/bin/php-config
./configure --enable-apc --enable-apc-mmap --with-php-config='/usr/local/bin/php-config'
Начинаем установку хака
1. Открыть файл engine/init.php
- найти
require_once ENGINE_DIR . '/modules/gzip.php';
- добавить
require_once ENGINE_DIR . '/classes/APC.php'; // Advanced PHP byte code cached
$apc_cache = new cache_apc();
2. Открыть файл engine/modules/functions.php
Найти
function set_vars($file, $data) {
$fp = fopen( ENGINE_DIR . '/cache/system/' . $file . '.php', 'wb+' );
fwrite( $fp, serialize( $data ) );
fclose( $fp );
@chmod( ENGINE_DIR . '/cache/system/' . $file . '.php', 0666 );
}
заменить на
function set_vars($file, $data) {
global $apc_cache;
$apc_cache->set($file, $data);
}
найти
function get_vars($file) {
return unserialize( @file_get_contents( ENGINE_DIR . '/cache/system/' . $file . '.php' ) );
}
заменить на
function get_vars($file) {
global $apc_cache;
return $apc_cache->get($file);
}
найти
function dle_cache($prefix, $cache_id = false, $member_prefix = false) {
global $config, $is_logged, $member_id;
if( $config['allow_cache'] != "yes" ) return false;
if( $is_logged ) $end_file = $member_id['user_group'];
else $end_file = "0";
if( ! $cache_id ) {
$filename = ENGINE_DIR . '/cache/' . $prefix . '.tmp';
} else {
$cache_id = totranslit( $cache_id );
if( $member_prefix ) $filename = ENGINE_DIR . "/cache/" . $prefix . "_" . $cache_id . "_" . $end_file . ".tmp";
else $filename = ENGINE_DIR . "/cache/" . $prefix . "_" . $cache_id . ".tmp";
}
return @file_get_contents( $filename );
}
заменить на
function dle_cache($prefix, $cache_id = false, $member_prefix = false) {
global $config, $is_logged, $member_id, $apc_cache;
if( $config['allow_cache'] != "yes" ) return false;
if( $is_logged ) $end_file = $member_id['user_group'];
else $end_file = "0";
if( ! $cache_id ) {
$filename = $prefix;
} else {
$cache_id = totranslit( $cache_id );
if( $member_prefix ) $filename = $prefix . "_" . $cache_id . "_" . $end_file;
else $filename = $prefix . "_" . $cache_id;
}
return $apc_cache->get( $filename );
}
найти
function create_cache($prefix, $cache_text, $cache_id = false, $member_prefix = false) {
global $config, $is_logged, $member_id;
if( $config['allow_cache'] != "yes" ) return false;
if( $is_logged ) $end_file = $member_id['user_group'];
else $end_file = "0";
if( ! $cache_id ) {
$filename = ENGINE_DIR . '/cache/' . $prefix . '.tmp';
} else {
$cache_id = totranslit( $cache_id );
if( $member_prefix ) $filename = ENGINE_DIR . "/cache/" . $prefix . "_" . $cache_id . "_" . $end_file . ".tmp";
else $filename = ENGINE_DIR . "/cache/" . $prefix . "_" . $cache_id . ".tmp";
}
$fp = fopen( $filename, 'wb+' );
fwrite( $fp, $cache_text );
fclose( $fp );
@chmod( $filename, 0666 );
}
заменить на
function create_cache($prefix, $cache_text, $cache_id = false, $member_prefix = false) {
global $config, $is_logged, $member_id, $apc_cache;
if( $config['allow_cache'] != "yes" ) return false;
if( $is_logged ) $end_file = $member_id['user_group'];
else $end_file = "0";
if( ! $cache_id ) {
$filename = $prefix;
} else {
$cache_id = totranslit( $cache_id );
if( $member_prefix ) $filename = $prefix . "_" . $cache_id . "_" . $end_file;
else $filename = $prefix . "_" . $cache_id . ".tmp";
}
$apc_cache->set($filename, $cache_text);
}
найти
function clear_cache($cache_area = false) {
$fdir = opendir( ENGINE_DIR . '/cache' );
while ( $file = readdir( $fdir ) ) {
if( $file != '.' and $file != '..' and $file != '.htaccess' and $file != 'system' ) {
if( $cache_area ) {
if( strpos( $file, $cache_area ) !== false ) @unlink( ENGINE_DIR . '/cache/' . $file );
} else {
@unlink( ENGINE_DIR . '/cache/' . $file );
}
}
}
}
заменить на
function clear_cache($cache_area = false) {
global $apc_cache;
$apc_cache->clear_cache();
}
Содержание файла engineclassesAPC.php
<?php
/*
=====================================================
DataLife Engine Advanced PHP Cache [mode] =:)
Coded by Pandora aka Denis
=====================================================
*/
if(!defined('DATALIFEENGINE'))
{
die("Hacking attempt!");
}
class cache_apc
{
//var $used = true;
function cache_apc ()
{
if (!$this->is_installed())
{
die('Error: APC extension not installed');
}
}
// Fetch a stored variable from the cache
function get ($name)
{
return apc_fetch($name);
}
// Cache a variable in the data store
function set ($name, $value, $ttl = 0)
{
return apc_store($name, $value, $ttl);
}
// Removes a stored variable from the cache
function rm ($name)
{
return apc_delete($name);
}
// Clears the APC cache
function clear_cache ($cache_type = NULL)
{
return apc_clear_cache($cache_type);
}
// Retrieves APC's Shared Memory Allocation information
function sma_info($limited = false)
{
return apc_sma_info($limited);
}
// Defines a set of constants for retrieval and mass-definition
function save_constants($key, $constants, $case_sensitive = true)
{
return apc_define_constants($key, $constants, $case_sensitive);
}
// Loads a set of constants from the cache
function load_constants($key, $case_sensitive = true)
{
return apc_load_constants($key, $case_sensitive);
}
function is_installed ()
{
return function_exists('apc_fetch');
}
}
P.S. Взято с 4dle.ru и если что то испортиться то я ответственности не несу ))