Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как настроить файловое кэширование?

Как настроить файловое кэширование?


     05.10.2017    Все вопросы » Общие вопросы по PHP    2052

вопрос
Идет большая нагрузка на сервер, хостер посоветовал настроить кеширование по схеме:
что куда вставлять я не понял, у меня в файле index.php нет таких значений.

Инструкция по установке:
1. Создаем папку /engine/cache/all и ставим на нее права на запись (chmod 777 или 775 в зависимости от хостера).
2. Открываем index.php и редактируем:
Находим:
@session_start ();


Вставляем после:
///////////////Файловое кэширование//////////////  
if($_SESSION['dle_user_id'] == 0 && $_SERVER['REQUEST_METHOD'] == "GET")  
{  
    $cache_time = 21600; //Время жизни кеша в секундах  
    $FCache = $_SERVER['DOCUMENT_ROOT'].'/engine/cache/all/'.md5($_SERVER['REQUEST_URI']).'.html';  
    if (file_exists($FCache) && filemtime($FCache)>time()-$cache_time)  
    {  
        echo join('',file($FCache))."<!-- use cache -->";  
        exit;  
    }  
}  
/////////////////////////////////////////////////

Находим:
$tpl->compile ( 'main' );

Вставляем перед:
ob_start();

Находим:
GzipOut ();

Вставляем после:
//////////Файловое кэширование//////////  
if($_SESSION['dle_user_id'] == 0 && $_SERVER['REQUEST_METHOD'] == "GET")  
{  
    $pageBuf = ob_get_contents();  
    $fp = fopen($FCache, "w");  
    fputs($fp, $pageBuf);  
    fclose($fp);  
}  
////////////////////////////////////////


После этих манипуляций в папке /engine/cache/all будут накапливаться кешированные страницы сайта.
Для того чтобы устаревший кеш редкооткрываемых страниц не копился и не забивал вам винчестер, добавляем по крону выполнение следующего скрипта каждые 10 минут например.

  
$cache_time = 21600+10; //Время жизни кеша в секундах + 10 секунд  
$url = "/home/admin/domains/site.ru/public_html/engine/cache/all/"; // полный путь к папке с кешем от корня сервера.  
$dir = opendir($url);  
while(($file = readdir($dir)) !== false)  
{  
    $ras = pathinfo($file);  
    if($ras[extension] == 'html')  
    {  
        $FCache = $url.$file;  
        if (file_exists($FCache) && filemtime($FCache) < time()-$cache_time)  
        {  
            unlink($FCache);  
        }  
    }  
}  
closedir($dir);  


вот мой файл index.php что куда всталять не понимаю

 
@ob_start ();
@ob_implicit_flush ( 0 );

if( !defined( 'E_DEPRECATED' ) ) {

	@error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );
	@ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );

} else {

	@error_reporting ( E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );
	@ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );

}

@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );

define ( 'DATALIFEENGINE', true );
define ( 'ROOT_DIR', dirname ( __FILE__ ) );
define ( 'ENGINE_DIR', ROOT_DIR . '/engine' );

require_once ROOT_DIR . '/engine/init.php';

?>


Заранее спасибо?

Ответа пока нет


4 комментария

lutskboy
Эксперт

lutskboy - 10 октября 2017 11:18 -

откройте еще engine/modules/main.php

myfootball
Юзер

myfootball - 19 сентября 2020 17:40 -

У меня такая же проблема как и у автора этого вопроса, в engine/modules/main.php нашел только
$tpl->compile ( 'main' );

Где найти
@session_start ();

И
GzipOut ();

Роман48
Юзер

Роман48 - 24 января 2019 14:48 -


Привет. Господа, на сайт пришел траф, был вынужден сделать это кеширование, нагрузку реально снижает на 50-60%
Но вот проблема форма жалобы не работает, отправляешь жалобу на новость пишет error , можно что-то сделать, что бы этой ошибки не было?
Без этого кеширования уже сайт упал бы.

myfootball
Юзер

myfootball - 19 сентября 2020 17:41 -

У меня такая же проблема как и у автора этого вопроса, в engine/modules/main.php нашел только
$tpl->compile ( 'main' );

Где найти
@session_start ();

И
GzipOut ();

Можете рассказать как Вы настроили? Где и что вставляли буду очень благодарен. Спасибо

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх