Re: Большая нагрузка на сервер
Бывает...
А какой хостер?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Впринципе то там все стандартно вплоть до подключения файла новостей.
Либо это фильтры шалят, либо очень много роботов накинулись на рсс ленту...
Бывает...
А какой хостер?
Multihost.ru
Короче они меня заипали
Сваливая на впс)
Miksar, спасибо за наводку про права к файлам в head.php кстати. Сам бы и не додумался.
Насчёт кода в addnews.mdu есть альтернатива (она на форуме по моему Wallkman`om писалась)
$sql->update(array(
'table' => 'users',
'where' => array("username = $member[username]"),
'values' => array('publications' => $sql->count(array('table' => 'news', 'where' => array("author = $member[username]"))))
));По поводу нагрузок:
По моим наблюдениям нагрузки создает массив пользователей $user as $row при условии что их более 100.
И файл в /data - xfields-data.php.
Пришлось отказаться от использования плагинов с ним связанных.
Пока не знаю как придется с файлом setting.php
C xfields-data.php бы что-то придумать... Особенно когда там много инфы... Никто ничего не делал с этим?
Как же? Ант-Soft предлагал альтернативу на MySQL!
Miksar, это же нужно поиском пользоваться! Зачем, если есть добрые модераторы, которые и поищут и подскажут!
Я вообще думаю что твою идею нужно в основные новости на сайте пустить. Чтоб она не затерялась!
Штука то поистне революционная ![]()
Arkuenont , я просто отключил плагины использующие xfields-data.php, очистил этот файл и загрузил онлайн-редактор FCKeditorPHP WYSIWYG for Strawberry (прописав в CSS условия для <p>).
Пока остаётся актуальным отключения комментариев для отдельного поста.
ЗЫ. Г-да, такой вопрос... если xfields-data.php тормозит сайты , то теоретически setting.php (если там много инфы) тоже ?
Отредактировано YurySpoloh (12 Jan 2010 15:50:15)
YurySpoloh, а что у нас в settings.php? Только данные настроек плагинов и прочая фигня, которая нужна только время от времени.
Тут важно соблюсти золотую середину: определиться, что по времени и по объёму быстрее - запросы к БД, или чтение данных из текстового файла.
Нибольшую важность имеет плагин DDB... остальное плюс-минус ...
<?
$array = array (
'Custom_Quick_Tags' =>
array (
'tags' =>
array (
0 =>
array (
'name' => 'Жирный',
'tag' => 'b',
'complex' => '',
'replace' => '<strong>$1</strong>',
),
1 =>
array (
'name' => 'Наклонный',
'tag' => 'i',
'complex' => '',
'replace' => '<em>$1</em>',
),
2 =>
array (
'name' => 'Подчеркнутый',
'tag' => 'u',
'complex' => '',
'replace' => '<u>$1</u>',
),
3 =>
array (
'name' => 'Зачеркнутый',
'tag' => 'del',
'complex' => '',
'replace' => '<s>$1</s>',
),
4 =>
array (
'name' => 'Цитата',
'tag' => 'q',
'complex' => '',
'replace' => '<blockquote>«<small>$1</small>»</blockquote>',
),
),
),
'uhtaccess' => '',
'Blocks' =>
array (
'blocks' => 'bookmarks|calendar|content/do/archives|content/do/category|content/do/else|content/do/forgot|content/do/mail|content/do/map|content/do/registration|content/do/search|content/do/users|headlines|links|main|menu|meta|output|pages|right|submenu|top5|users',
'menu' => 'menu',
'left' => 'useful',
'content' => 'submenu',
'right' => 'right|calendar',
'head' => 'meta',
),
'registration' =>
array (
'preventRegFlood' => true,
'RegDelay' => 180,
'banOnWarns' => 3,
'regLevel' => 4,
'127.0.0.1' =>
array (
'warns' => 3,
'LastRegTime' => 1241910937,
),
),
'Adepto_Fastload' =>
array (
'path_upload' => 'http://test.ru/upload/attach',
'delete_files' => '1',
'deny_files' => '.cgi .pl .shtml .shtm .php .php3 .php4 .php5 .phtml .phtm .phps',
),
'CN2LJ' =>
array (
'title' => '{title}',
'story' => '{story}{nl}{nl}<p style="text-align: right;"><a href="{link}" style="color: #666;font-size: 9px;" title="«{title}»">{hometitle}</a>',
),
'CommSpy' =>
array (
'subj' => 'На сайте {page-title} новый комментарий от {author}',
'body' => 'Здравствуйте.{nl}{nl}Вы подписались на получение новых комментариев с сайта {page-title}. Кто-то оставил там новый комментарий.{nl}{nl}{nl}Комментарий:{nl}----------------{nl}{comment}{nl}{nl}{nl}URL: {link}',
),
'Baners' =>
array (
1 =>
array (
'name' => 'Верхний баннер',
'position' => 'top_banner',
'posts' => '',
'link' => 'http://site.ru',
'text' => '<p><img src="http://test.ru/content/data/upimages/Banners/topbanner.jpg" width="640"></p>',
'baner' => '1',
),
2 => NULL,
),
'rating' =>
array (
'ip_lock' => 'yes',
'cookie_lock' => 'yes',
),
'image_manager' =>
array (
'align' => 'none',
'popup' => '0',
'update' => '0',
'replace' => '1',
'replace_template' => '<i>{date:d.m.Y}: <b>{image}</b> was removed.</i>',
'video_width' => '640',
'video_height' => '600',
'auto_start' => 'yes',
'uimode' => 'full',
'media_extensions' => 'avi,mp3,swf',
),
);
?>Отредактировано YurySpoloh (12 Jan 2010 15:59:54)
Поделюсь наблюдениями про нагрузку на сервер, после переезда на vds.
VDS - Проц 1280 Мг, оперативка 1024 мб, диск 32 гб.
CentOS, Apache2, Mysql, php5.
Короче после того, как я взял vds, не оптимизированный и не настроенный, только с установленным вышеперечисленным ПО, я залил туда все сайты и они грузили проц примерно на 5-6 процентов. Далее я немного разобрался и провел небольшую оптимизацию. Настроил файл my.cnf и установил eaccelerator. После этого проц грузится примерно на 1 процент. Правда хавает оперативку. Но в любом случаее свободной оперативки примерно 20 мб и плюс оперативки выделенной под кеш около 600.
А на виртуальном хостинге меня отключали по несколько раз в день и говорили. что гружу проц на 97 процентов. Вот так вот...
Хостинг: mchost.ru, сайт посещаемостью 1500 уников, 2200 посещений, кеширование включено и работает.
Информация по нагрузке за последние сутки:
16.02.2010 23:50 51%
16.02.2010 23:40 479%
16.02.2010 23:30 469%
16.02.2010 23:20 109%
16.02.2010 23:10 43%
16.02.2010 23:00 66%
16.02.2010 22:50 68%
16.02.2010 22:40 128%
16.02.2010 22:30 124%
16.02.2010 22:20 50%
16.02.2010 22:10 81%
16.02.2010 22:00 79%
16.02.2010 21:50 102%
16.02.2010 21:40 61%
16.02.2010 21:30 107%
16.02.2010 21:20 156%
16.02.2010 21:10 88%
16.02.2010 21:00 96%
16.02.2010 20:50 164%
16.02.2010 20:40 163%
16.02.2010 20:30 122%
16.02.2010 20:20 86%
16.02.2010 20:10 149%
16.02.2010 20:00 120%
16.02.2010 19:50 122%
16.02.2010 19:40 106%
16.02.2010 19:30 132%
16.02.2010 19:20 110%
16.02.2010 19:10 132%
16.02.2010 19:00 151%
16.02.2010 18:50 195%
16.02.2010 18:40 133%
16.02.2010 18:30 151%
16.02.2010 18:20 138%
16.02.2010 18:10 146%
16.02.2010 18:00 129%
16.02.2010 17:50 122%
16.02.2010 17:40 134%
16.02.2010 17:30 148%
16.02.2010 17:20 109%
16.02.2010 17:10 191%
16.02.2010 17:00 126%
16.02.2010 16:50 152%
16.02.2010 16:40 111%
16.02.2010 16:30 120%
16.02.2010 16:20 98%
16.02.2010 16:10 111%
16.02.2010 16:00 95%
16.02.2010 15:50 139%
16.02.2010 15:40 130%
16.02.2010 15:30 125%
16.02.2010 15:20 113%
16.02.2010 15:10 152%
16.02.2010 15:00 87%
16.02.2010 14:50 107%
16.02.2010 14:40 92%
16.02.2010 14:30 143%
16.02.2010 14:20 119%
16.02.2010 14:10 135%
16.02.2010 14:00 115%
16.02.2010 13:50 138%
16.02.2010 13:40 106%
16.02.2010 13:30 166%
16.02.2010 13:20 95%
16.02.2010 13:10 138%
16.02.2010 13:00 158%
16.02.2010 12:50 102%
16.02.2010 12:40 89%
16.02.2010 12:30 109%
16.02.2010 12:20 116%
16.02.2010 12:10 121%
16.02.2010 12:00 107%
16.02.2010 11:50 99%
16.02.2010 11:40 102%
16.02.2010 11:30 76%
16.02.2010 11:20 114%
16.02.2010 11:10 74%
16.02.2010 11:00 68%
16.02.2010 10:50 87%
16.02.2010 10:40 107%
16.02.2010 10:30 96%
16.02.2010 10:20 108%
16.02.2010 10:10 87%
16.02.2010 10:00 107%
16.02.2010 09:50 122%
16.02.2010 09:40 78%
16.02.2010 09:30 111%
16.02.2010 09:20 90%
16.02.2010 09:10 109%
16.02.2010 09:00 183%
16.02.2010 08:50 107% Кроме клубнички других скриптов не используется, комментарии на сайте отключены и не используются...
16.02.2010 23:40 479%
Это круто! Как можно загрузить проц. больше чем на 100%??? Хостер должен аппаратно это отрубать.
Если ваш сайт - не банковский портал он-лайн услуг, и не закрытая база персональных данных, и не ресурс министерства обороны, то скорее всего такую нагрузку создают обычные поисковые роботы.
1. Создаёте в корне сайта файл robots.txt с таким содержанием:
User-agent: *
Disallow: /images/
Disallow: /strawberry/
images и strawberry - имена ваших папок с рисунками и клубникой. Если есть другие папки, содержание которых не нужно индексировать, можете тоже добавить их в список.
2. В мета-тегах заголовка файла index.php (главной страницы сайта) пишете:
<meta name="robots" content="noindex,nofollow">
<meta name="revisit-after" content="5 days">
Всё, роботы отрублены!
А лучше купите нормальный хостинг с неограниченным исходящим траффиком и принципиальным отсутствием в описании услуг такого понятия, как "нагрузка на процессор"!
Почитайте здесь (на правах рекламы).
дык... ![]()
Я не камикадзе, чтобы роботов отрубать)))
Я их люблю и всегда рад видеть)) ![]()
Оптимизация и нужна, чтобы сайт роботами хорошо индексировался... ![]()
А вот как _еще_ нагрузку сбить ума не приложу... ![]()
На сайте кешируется всё, что можно, в секретные директории роботы не лезут, поиском не пользуются)
НТхостом пользовался, скажу "нет, спасибо!" - после заражения всех php скриптов и html файлов на аккаунте по вине хостинга, больше на него в жизни не перейду...
Остается МастерХост, видимо... Официальный сайт Клубнички на нем и работает... ![]()
НТхостом пользовался, скажу "нет, спасибо!" - после заражения всех php скриптов и html файлов на аккаунте по вине хостинга, больше на него в жизни не перейду...
Сразу видать, что человек не умеет заботится о безопасности файлов.
А все просто. На не исполняемые (в том числе инклюдящиеся) ставим права 444.
А на индексы, которые открываем в браузере - 555. Ффсе. Если индексы 555 еще могут с грехом пополам перезаписать, но 444 - нет. Из личного опыта )) Ибо так же ломали.
Но не совсем на хост грешу. А на новые вирусы, которые системой антивиря еще не ловятся - открываешь тотал коммандер, делаешь коннект - все. дело сделано. Через 10 мин делаешь реконнект - все файлы перезаписаны... (было это давно, с тех пор к вопросу о безопасности информации подхожу строго).
Вы скажите - да окуеть можно от того количества файлов, на которые надо переустановить права.
Тут уж вам решать...
По моим наблюдениям нагрузки создает массив пользователей $user as $row при условии что их более 100.
Время загрузки подскочило до 8-13 секунд.
Было 700 пользователей от спам-ботов.
Удалил лишних пользователей. Оставил 20 аккаунтов.
Время загрузки СРАЗУ упало до 2-3 секунды.
Согласен, cmd, я обращал внимание на постоянно использующиеся массивы в системе - то как пользователи и категории. Кстати - такого не в одной кмс не встречал ))
Это дело можно отрубить делая запрос только там где надо - но это будет много мест - где надо будет дописывать...
Strawberry 1.1.1
Вопрос не сколько прямой по "Большой нагрузке на сервер", но "почти" в тему:
Есть несколько сайтов на Strawberry ( для примера страницы - flover.org.ua/plants/indoor/lukov/amarillis-prekrasnyi.html , myronivka.com.ua/rozdumy/zamuzhem-v-ameryke.html ), работает всё нормально ( тьфу-тьфу пока... ).... Так вот, решил снова оптимизировать сайты и вот что заметил - на страницах вывода новости несколько раз идёт загрузка prototype.js , cute.js и код:
<script>
function insertext(open, close, spot){
msgfield = document.forms['comment'].elements['comments'];
// IE support
if (document.selection && document.selection.createRange){
msgfield.focus();
sel = document.selection.createRange();
sel.text = open + sel.text + close;
msgfield.focus();
}
..........Это происходит после вывода новостей из активной категории:
<?php
ob_start();
$number = 10;
$template = 'right22';
include rootpath.'/show_news.php';
if ($post['category']){ // узнаём, открыта ли какая-то новость и в категории ли она вообще
$static['skip'] = 0;
$static['template'] = 'right22';
$static['number'] = 10;
$static['category'] = $post['category'];
include rootpath.'/show_news.php';
}
$news_from_categ = ob_get_clean();
?>Информация выводится так:
<?=$news_from_categ; ?>В шаблоне right22 заполнен только файл - active.tpl , остальные по нулю...
Соответственно загружаются *.js файлы по несколько раз - возрастает время загрузки страницы и видимо нагрузка.
Как можно выйти из этого тупика?
Отредактировано olafsen (10 Sep 2010 23:16:23)
НАГРУЗКА- Это реальная проблема!
За год поменять 3 прописки и 3 раза умалять разблокировать сайт- не смешно уже... и все по причине нагрузки.
Причина почти одна - хостеры КОЗЛы.
Они набирают от жадности студентов для администрирования серверов. А те грамотные очень, начинают свои гениальные эксперименты применять, можно только так сказать. Хотя им пофиг, они не раз писали - покупайте выделенный сервер...
как отрубить не нужных ботов?
пробовал через robots.txt:,
User-agent: YandexBlogs
Disallow: /
User-agent: StackRambler
Disallow: /
Но они все равно ходят по сайту.
По лог-файлам у них наибольшая нагрузка.
Есть другие способы, чтобы наверняка не сувались?
По IP в .htaccess не канает, т.к. они меняют их частенько
Отредактировано dMark (25 Oct 2010 13:59:44)
dMark, раз уже начали лазить по сайту, то очевидно, что они роют не корень сайта, на который действует robots.txt, а конкретные файлы, например index.php.
В заголовках своих страниц допишите
<meta name="robots" content="noindex,nofollow">
<meta name="revisit-after" content="5 days">будут соваться не чаще, чем раз в 5 дней. Совсем отрубать не нужно, всё-таки иногда полезно, чтобы роботы индексировали ваши страницы.
А robots.txt сделайте таким:
User-agent: *
Disallow: /Новые не залезут, а старые и так в курсе ваших дел.
content="noindex,nofollow"
и
User-agent: *
Disallow: /
Это слишком жестко, подобный камикадзе.
Напрягает YandexBlogs.
А все советы этого и других постов уже проделаны.
Хочу найти главный червь нагрузки, и задушить его суку..
У меня бессоница уже 3месяца, хостеры гоняют, блокируют, штрафуют...эээх
Нашел такую штуку:
<?php
/*
*--------------------------------------------------------
* Модуль antiddos.php V3.1.3 Вт 16 Март 2010
* Copyright (C) Андрей Якушев, 2006. http://avy.ru
*--------------------------------------------------------
* Модуль предназначен для ограничения доступа к сайту или
* к страницам, где он включён.
* Принцип работы в том, что запоминается ip-адрес и время
* обращения с этого адреса. И если в течение заданного
* времени происходит обращение с того же адреса, то ему
* выдаётся ошибка 503.
* Если количество недопустимых обращений подряд превышает
* определённое число, ip-адрес закрывается через файл
* .htaccess
* Модуль необходимо подключать к скрипту самым первым.
* Этим обеспечивается быстрота его работы.
*--------------------------------------------------------
*/
/* Директория для временных файлов. Необходимо указать
отдельную директорию, т.к. большое количество файлов
в одной папке змедляет скорость обращения к ней. */
define ('AD_DIRNAME', $_SERVER['DOCUMENT_ROOT'] . '/tmp_path');
/* Время задержки в секуднах, в течение которого нельзя
обращаться к сайту. */
define ('AD_DELAY', 2);
/* Количество запрещённых повторений, после которых ip-адрес
будет забанен. Нужно обратить внимание на то, что некоторые
программы чтения RSS-каналов считывают все ссылки, помещённые
в канале сразу. Поэтому, если на сайте есть такие каналы,
это число необходимо поставить больше, чем максимальное
количество элементов в канале. */
define ('AD_TRYING', 35);
/*
*---------------------------------------------------------------
* Список поисковых роботов.
* Очень не хорошо, если поисковый робот будет натыкаться
* на ошибки на сайте. Ему это может сильно не понравиться.
* Поэтому пишем список ip-адресов роботов; добавляем или
* удаляем, что нужно.
* IP-адреса:
* Alta Vista - см. Yahoo
* Aport - 194.67.18.
* Gigabot - 66.231.188. (66.231.188.0/24)
* Google - 209.85.128.0 - 209.85.255.255 (209.85.128.0/17),
* 72.14.192.0 - 72.14.255.255 (72.14.192.0/18),
* 66.249.64.0 - 66.249.95.255 (66.249.64.0/19),
* 64.68.80.0 - 64.68.87.255 (64.68.80.0/21),
* 66.102.0.0 - 66.102.15.255 (66.102.0.0/20),
* 64.233.160.0 - 64.233.175.255 (64.233.160.0/19),
* 216.239.32.0 - 216.239.63.255 (216.239.32.0/19)
* Mail.Ru - 195.239.211.0 (195.239.211.0/24),
* 94.100.181.128 - 94.100.181.255 (94.100.181.128/25)
* msnbot - 65.52.0.0 - 65.55.255.255 (65.52.0.0/14),
* 207.46.0.0 - 207.46.255.255 (207.46.0.0/16)
* Rambler - 81.19.64.0 - 81.19.66.255 (81.19.64.0/19)
* Yahoo - 74.6.0.0 - 74.6.255.255 (74.6.0.0/16),
* 69.147.64.0 - 69.147.127.255 (69.147.64.0/18)
* 72.30.64.0 - 72.30.255.255 (72.30.0.0/16)
* 67.195.0.0 - 67.195.255.255 (67.195.0.0/16)
* Yandex - 213.180.214.128 - 213.180.214.255 (213.180.192.0/19),
* 77.88.22.0 - 77.88.23.255 (77.88.0.0/18)
* 93.158.128.0 - 93.158.191.255 (93.158.128.0/18)
* 95.108.128.0 - 95.108.255.255 (95.108.128.0/17)
* 87.250.224.0 - 87.250.255.255 (87.250.224.0/19)
* LiveInternet - 88.212.202.0 - 88.212.202.63 (88.212.202.0/26)
* Ip-адреса и маски к ним кодируются в виде строки из 4 символов
* Это сделано из-за того, что невозможно в PHP использовать
* стандартными (простыми) процедурами 32-битное целое число
* без знака. А использование специальных библиотек усложнит
* работу и сделает скрипт зависимым от этих библиотек.
*---------------------------------------------------------------
*/
$ad_Robots_IP = array(
'Aport' => array(
sprintf('%c%c%c%c', 194, 67, 18, 0),
sprintf('%c%c%c%c', 255, 255, 255, 0)
),
'Gigabot' => array(
sprintf('%c%c%c%c', 66, 231, 188, 0),
sprintf('%c%c%c%c', 255, 255, 255, 0)
),
'Google1' => array(
sprintf('%c%c%c%c', 209, 85, 128, 0),
sprintf('%c%c%c%c', 255, 255, 128, 0)
),
'Google2' => array(
sprintf('%c%c%c%c', 72, 14, 192, 0),
sprintf('%c%c%c%c', 255, 255, 192, 0)
),
'Google3' => array(
sprintf('%c%c%c%c', 66, 249, 64, 0),
sprintf('%c%c%c%c', 255, 255, 224, 0)
),
'Google4' => array(
sprintf('%c%c%c%c', 64, 68, 80, 0),
sprintf('%c%c%c%c', 255, 255, 248, 0)
),
'Google5' => array(
sprintf('%c%c%c%c', 66, 102, 0, 0),
sprintf('%c%c%c%c', 255, 255, 240, 0)
),
'Google6' => array(
sprintf('%c%c%c%c', 64, 233, 160, 0),
sprintf('%c%c%c%c', 255, 255, 224, 0)
),
'Google7' => array(
sprintf('%c%c%c%c', 216, 239, 32, 0),
sprintf('%c%c%c%c', 255, 255, 224, 0)
),
'Mail.Ru1' => array(
sprintf('%c%c%c%c', 195, 239, 211, 0),
sprintf('%c%c%c%c', 255, 255, 255, 0)
),
'Mail.Ru2' => array(
sprintf('%c%c%c%c', 94, 100, 181, 128),
sprintf('%c%c%c%c', 255, 255, 255, 128)
),
'msnbot1' => array(
sprintf('%c%c%c%c', 65, 52, 0, 0),
sprintf('%c%c%c%c', 255, 252, 0, 0)
),
'msnbot2' => array(
sprintf('%c%c%c%c', 207, 46, 0, 0),
sprintf('%c%c%c%c', 255, 255, 0, 0)
),
'Rambler' => array(
sprintf('%c%c%c%c', 81, 19, 64, 0),
sprintf('%c%c%c%c', 255, 255, 224, 0)
),
'Yahoo1' => array(
sprintf('%c%c%c%c', 74, 6, 0, 0),
sprintf('%c%c%c%c', 255, 255, 0, 0)
),
'Yahoo2' => array(
sprintf('%c%c%c%c', 69, 147, 64, 0),
sprintf('%c%c%c%c', 255, 255, 192, 0)
),
'Yahoo3' => array(
sprintf('%c%c%c%c', 72, 30, 0, 0),
sprintf('%c%c%c%c', 255, 255, 0, 0)
),
'Yahoo4' => array(
sprintf('%c%c%c%c', 67, 195, 0, 0),
sprintf('%c%c%c%c', 255, 255, 0, 0)
),
'Yandex1' => array(
sprintf('%c%c%c%c', 213, 180, 192, 0),
sprintf('%c%c%c%c', 255, 255, 224, 0)
),
'Yandex2' => array(
sprintf('%c%c%c%c', 77, 88, 0, 0),
sprintf('%c%c%c%c', 255, 255, 192, 0)
),
'Yandex3' => array(
sprintf('%c%c%c%c', 93, 158, 128, 0),
sprintf('%c%c%c%c', 255, 255, 192, 0)
),
'Yandex4' => array(
sprintf('%c%c%c%c', 95, 108, 128, 0),
sprintf('%c%c%c%c', 255, 255, 128, 0)
),
'Yandex5' => array(
sprintf('%c%c%c%c', 87, 250, 224, 0),
sprintf('%c%c%c%c', 255, 255, 224, 0)
),
'LiveInternet' => array(
sprintf('%c%c%c%c', 88, 212, 202, 0),
sprintf('%c%c%c%c', 255, 255, 255, 192)
),
);
/*
*----------------------------------------------------------
* Функция создаёт в указанной директории файл, начинающийся
* с буквы a (для отличия от других возможных файлов) и
* содержащий в имени ip-адрес клиента.
* Если количество обращений подряд с данного адреса
* превысило допустимый предел, адрес закрывается через файл
* .htaccess
* При желании может быть отослано письмо на специальный
* адрес, в котором будет передана информация о действиях
* с заблокированного адреса.
*----------------------------------------------------------
*/
function ad_WriteIP($counter)
{
$counter++;
if ($counter > AD_TRYING)
{
//Баним ip-адрес
$f = fopen($_SERVER['DOCUMENT_ROOT'] . '/.htaccess', 'a');
fwrite($f, "\ndeny from " . $_SERVER['REMOTE_ADDR']);
fclose($f);
// Открыть комментарии, если нужно уведомлять по почте
/*
//Получаем хост (в некоторых логах он может быть вместо ip
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$mess = 'Заблокирован адрес ' . $_SERVER['REMOTE_ADDR'] .
' (' . $host . ")\n\n";
//Выполняем запрос к логам. Нужно указать путь и имя лог-файла
exec('cat /home/your_dir/logs/access_log | egrep \'(' .
str_replace('.', '\\.', $_SERVER['REMOTE_ADDR']) . ')|(' .
str_replace('.', '\\.', $host) . ')\' | sort -k 4 >' .
AD_DIRNAME . '/dump.txt');
$mess .= file_get_contents(AD_DIRNAME . '/dump.txt');
@ unlink(AD_DIRNAME . '/dump.txt');
$email = 'my_box@myhost.ru'; //Укажите свой e-mail
mail($email, 'IP-address was banned', $mess, "From: " . $email .
"\nReply-To: " . $email .
"\nContent-Type: text/plain; charset=Windows-1251" .
"\nContent-Transfer-Encoding: 8bit");
*/
}
else
{
//Записываем файл с ip-адресом и количеством обращений
$f = fopen(AD_DIRNAME . '/a' . $_SERVER['REMOTE_ADDR'] . '_' .
$counter, 'w');
fclose($f);
}
}
/*
*----------------------------------------------------
* Проверка на отношение ip-адреса к сетям поисковиков
*----------------------------------------------------
*/
$ad_IsRobot = false;
$ad_IP = explode('.', $_SERVER['REMOTE_ADDR']);
$ad_IPMatch = sprintf('%c%c%c%c', $ad_IP[0], $ad_IP[1], $ad_IP[2], $ad_IP[3]);
foreach ($ad_Robots_IP as $ad_match)
{
//Если на входящий адрес наложить маску операцией "и",
//то он должен будет совпасть с начальным адресом сети.
if (($ad_IPMatch & $ad_match[1]) == $ad_match[0])
{
$ad_IsRobot = true;
break;
}
}
/*
*---------------------------------------------------------
* Поисковые роботы не любят, когда к адресу страницы
* добавляется переменная сессии. Поэтому, если на сайте
* используются сессии, то их лучше включать, если агент -
* не робот.
* Если сессии не используются, то этот кусок можно убрать.
*---------------------------------------------------------
*/
/*
if (!$ad_IsRobot)
{
session_start();
}
else
{
// Чтобы поисковый робот не сильно загружал сайт,
//делаем ему задержку
sleep(AD_DELAY);
}
*/
if (!$ad_IsRobot)
{
/*** Чтение каталога и удаление старых файлов ***/
$ad_dir = opendir(AD_DIRNAME) or
die('Отсутствует директория для временных файлов');
$ad_forbid = time() - AD_DELAY;
/* IP-адрес в имени файла, начинающегося на букву a,
а время обращения - время изменения файла */
$ad_before_trying = 0;
while (false !== ($ad_FName = readdir($ad_dir)))
{
if (ereg('^a[1-9]', $ad_FName))
{
if (@ filemtime(AD_DIRNAME . '/' . $ad_FName) < $ad_forbid){
@ unlink(AD_DIRNAME . '/' . $ad_FName);
}
elseif (ereg('^a' . str_replace('.', '\\.',
$_SERVER['REMOTE_ADDR']) . '_([0-9]+)$', $ad_FName, $ad_match))
{
//Если файл есть, то читаем, сколько раз к нму обращались
$ad_before_trying = intval($ad_match[1]);
@ unlink(AD_DIRNAME . '/' . $ad_FName);
}
}
}
closedir($ad_dir);
/*** Выводить или не выводить сообщение об ошибке ***/
if ($ad_before_trying > 0)
{
/* Если обращение было недавно, то выводим сообщение об ошибке */
header ('HTTP/1.0 503 Service Unavailable');
header ('Status: 503 Service Unavailable');
header ('Retry-After: ' . $ad_delay * 3);
?>
<!doctype html public "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Ошибка 503</title>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
</head>
<body>
<h1>Ошибка 503 (Service Unavailable)</h1>
<p>Сервер не может в данный момент выдать запрашиваемую Вами страницу.
Попробуйте вызвать эту страницу позже (клавиша F5).</p>
</body>
</html>
<?php
ad_WriteIP($ad_before_trying); // Перед выходом записываем ip
exit;
}else{
ad_WriteIP($ad_before_trying);
}
}
?>Создайте папку tmp_path в корневой.
Вставляем код После <? include ($_SERVER["DOCUMENT_ROOT"]."/news/head.php"); ?>
Сейчас на стадии наблюдения, но вроде люди довольны.
Источник http://avy.ru/ftopic1870.html
Отредактировано dMark (25 Oct 2010 21:14:06)
FormatSwitcher (выбор формата новости) - самый аццкий плагин, создающий дикую нагрузку на сервер. В первую очередь смотрите на него. Он к каждой новости обращается несколько раз при каждом выводе, даже со включенным кэшированием в настройках. Если на странице много новостей/блоков - тут хостеру и трындец может случиться. Я принудительно выставил только один формат новости, а остальное все закомментировал нафиг - и количество запросов сразу уменьшилось во много раз.
И кэширование тоже рулит. На форуме была тема "Альтернативный кэш" - я сделал так, как там предлагали, и нагрузка на сервер тоже прилично упала, в несколько раз.
А до того тоже писец был - с одного хостинга прогнали, на другом чуть не отключили, думал уже отказываться от Клубники.