Skip to content

Instantly share code, notes, and snippets.

@SergeyStorm
Created September 24, 2016 14:23
Show Gist options
  • Save SergeyStorm/0f40afa25b48c095c66bbfe3f34b3dbd to your computer and use it in GitHub Desktop.
Save SergeyStorm/0f40afa25b48c095c66bbfe3f34b3dbd to your computer and use it in GitHub Desktop.
<?php
/**/
// включение подсчета времени генерирования страницы
$start_time = microtime(true);
//*/
// Управляемая буферизация вывода страницы
// так же для возможности отдачи файла с другим не буферизированным содержимым
function on_buffer($buffer) {
// заменить все "сукаблядь" на " (пиип) "
return(str_replace("сукаблядь", " (пиип) ", $buffer));
}
// старт буфера
ob_start('on_buffer');
/// --------- определения констант site и intsi
// site - путь к сайту на сервере
define('site', __DIR__.'/');
// intsi - директория движка относительно сайтов
define('intsi', 'intsi/');
/// ------- Определение переменных $url, $dirs, $file
$a = $_SERVER['REQUEST_URI'];
// Получаем текущий полный URL
$url = parse_url(urldecode("http://".$_SERVER["HTTP_HOST"].$_SERVER['REQUEST_URI']));
$url['path'] = ltrim($url['path'], '/'); // удаляем '/' в начале
// Парсим переменные GET в глобальный массив $_GET
isset($url['query']) && parse_str($url['query'], $_GET);
// Разбираем путь на «папки» ("/" в конце быть не может - удаляется в .htaccess)
$dirs = explode('/', $url['path']);
// $url['file'] - имя файла
$url['file'] = $dirs[count($dirs)-1];
// Разделение файла на имя ($file[0]) и расширение ($file[1] вместе с точкой перед расширением)
$file[1] = strrchr($url['file'], '.');
$file[0] = str_replace($file[1], '', $url['file']);
// Если в конце адреса файл (есть расширение у файла)
if ($file[1] != FALSE) {
// Признак существования - сраницы нету (запрещено прямое обращение к index.html)
define('ispage', FALSE);
// убираем из $url['path'] имя файла в конце
$url['path'] = rtrim($url['path'], $url['file']);
// убираем имя файла с массива имён папок
unset($dirs[count($dirs)-1]);
// Если в конце адреса путь (нет расширения, возможно это страница)
} else {
if (file_exists(site.$url['path'].'/i.htm')) {
// Признак существования страницы - сраница есть
define('ispage', TRUE);
// Добавляем '/' в конец $url['path'], ведь это папка (если не корень сайта)
if ($url['path'] != '') $url['path'] = $url['path'].'/';
// $url['file'] - имя файла
$url['file'] = 'i.htm';
// вводим имя и расширение страницы в $file
$file[0] = 'i';
$file[1] = 'htm';
// Если нету страницы в данной папке то пустое имя файла
} else {
// Признак существования страницы - сраницы нету
define('ispage', FALSE);
// Пустое имя файла
$url['file'] = '';
// Пустые имя и расширение страницы в $file
$file[0] = '';
$file[1] = '';
}
}
/*
session_start();
// проверка безопасности сессий
$check_user_session = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $check_user_session .= $_SERVER['HTTP_X_FORWARDED_FOR']; }
if (isset($_SERVER['HTTP_USER_AGENT'])) { $check_user_session .= $_SERVER['HTTP_USER_AGENT']; }
// проверяем, чтоб не было подмены сессии
if (isset($_SESSION['intsi'])) {
if ($_SESSION['intsi'] != md5($check_user_session)) {
session_destroy();
ob_end_clean();
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");
header('Status: 404 Not Found');
die("error");
} else $_SESSION['intsi'] = md5($check_user_session);
} else $_SESSION['intsi'] = md5($check_user_session);
*/
//Запрет кеширования клиентом
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Просроченная дата
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // всегда модифицированно
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", FALSE);
header("Pragma: no-cache"); // HTTP/1.0
/*
// Проверка и подключение мемкеша
if (class_exists('Memcache')) {
$memcache = new Memcache();
if ($memcache -> connect('localhost', 11211, 5)) {
$memcachetrue = TRUE; // признак использования мемкеша
echo "cache true";
}
}
*/
/// ------------ Загрузка общих настроек сайта
// Загрузка Mobile_Detect
include site.intsi.'kernel/mobile_detect.php';
// Файл общих настроек
include site.intsi.'config.php';
// Загрузка ядра
include site.intsi.'kernel/core.php';
// -------------------------------------------------------------------------------
// Если есть страница, то её отображение
if (ispage) {
// page - путь к папке страницы относительно сайта
define('page', $url['path']);
//$url['path'] = rtrim($_SERVER['REQUEST_URI'], '/'); // удаляем '/' в начале
// загрузка стандартных настроек и настроек страницы
include site.tpl.'i.php';
if (file_exists(site.page.'i.php')) include site.page.'i.php';
// загрузка страницы
include site.page.file;
// Выключить подсчёт времени генерации страницы
$intsi_statistic = FALSE;
// Ниже - если это файл стилей, то его отдача браузеру
// здесь надо подумать о разделении настроек стилей от настроек страницы
} else if ($file[1] == '.css') {
// page - путь к папке страницы относительно сайта
if (isset($_GET['page'])) define('page', $_GET['page']); else define('page', $url['path']);
// ///////////////////////// --- Переосмыслить надо файл настройуи для стилей !!!
// ///////////////////////// --- Переосмыслить надо файл настройуи для стилей !!!
// загрузка стандартных настроек и настроек страницы
include site.tpl.'i.php';
if (file_exists(site.page.'i.php')) include site.page.'i.php';
// Вставка в файл технического заголовка, что бы он стал файлом стилей
header('Content-type:text/css');
// Отдача файла стилей
include site.$url['path'].file;
// Выключить подсчёт времени генерации страницы
$intsi_statistic = FALSE;
// Ниже - если это файл скриптов, то его отдача браузеру
// здесь надо подумать о разделении настроек скриптов от настроек страницы
} else if ($file[1] == '.js') {
// page - путь к папке страницы относительно сайта
if (isset($_GET['page'])) define('page', $_GET['page']); else define('page', $url['path']);
// ///////////////////////// --- Переосмыслить надо файл настройуи для скриптов !!!
// ///////////////////////// --- Переосмыслить надо файл настройуи для скриптов !!!
// загрузка стандартных настроек и настроек страницы
include site.tpl.'i.php';
if (file_exists(site.page.'i.php')) include site.page.'i.php';
// Вставка в файл технического заголовка, что бы он стал файлом скриптов
header('Content-type:text/javascriptl');
// Отдача файла скриптов
include site.$url['path'].file;
// Выключить подсчёт времени генерации страницы
$intsi_statistic = FALSE;
// Если страница не существует - вывод ошибки 404
} else {
// сброс буфера, он ненужен
ob_end_clean();
// инициирование ошибки 404
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");
header('Status: 404 Not Found');
// выдача страницы 404
include site.intsi.'404.php';
}
// -------------------------------------------------------------------------------
/**/
if ($intsi_statistic) {
//печать времени генерирования страницы
$gen_time = microtime(true) - $start_time;
printf("Генерация страницы: %f секунд, ", $gen_time);
//вычисление потребления памяти
if(function_exists('memory_get_usage')) {
$mem_usage = memory_get_usage(true);
if ($mem_usage < 1024) echo $mem_usage." байт";
elseif ($mem_usage < 1048576) $memory_usage = round($mem_usage/1024,2)." кб";
else $memory_usage = round($mem_usage/1048576,2)." мб";
//Выводится это дело командой:
echo $memory_usage;
}
//*/
}
//*/
ob_end_flush();
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment