Как обезопасить падение сайта из за тизеров баннеров?

seosniks
На сайте с 13.08.2007
Offline
389
900

В общем лег сайт, если нашел косяк,

оказалось причина в информере погоды от

http://informer.gismeteo.ru, в итоге выдавал ошибку 500.

есть ли варианты защиты?

Как реализовать к примеру такую фишку,

кешируем каждый час, если через час проверяем донра и он не доступен то кеш не обновляем пока сайт донора не оживет.

Как вы решаете подобные проблемы?

Pro-host
На сайте с 06.07.2011
Offline
22
#1

Создаем файл для крона.

В самом файле, будет условие, если ответ получен то цикл идет дальше, если нет (по timeout) то останавливаеться.

хостинг с защитой от DDoS атак (http://pro-host.ws/)
R
На сайте с 17.11.2011
Offline
22
#2

запихивай тизеры-баннеры в ифреймы. Помогает.

Только в статичные, иначе сайт можеш положить.

домашняя страница - google.com.ua
seosniks
На сайте с 13.08.2007
Offline
389
#3
rommer:
запихивай тизеры-баннеры в ифреймы. Помогает.
Только в статичные, иначе сайт можеш положить.

Фреймы это не плохо, у меня коды в js

но блок парсера работает как приложение сайта, вот он мне и положил гад вчера весь сайт.

И еще есть ли что нибудь бесплатное мониторить сайты?

Может какой скрипт сделать чтоб опрашивать сайт?

Хосттракер у меня что то ничего не показывает.

T
На сайте с 13.04.2008
Offline
67
t3s
#4
seosniks:

Как реализовать к примеру такую фишку,

кешируем каждый час, если через час проверяем донра и он не доступен то кеш не обновляем пока сайт донора не оживет.

кешировать можно к примеру так

$cache_time = 9999;//время жизни кеша


$cache_nowtime = time ();
$filename = './superpupertizercache/tizer.dat';
$cache_maketime = filemtime($filename);
$cache_newtime = $cache_maketime+$cache_time;

if ($cache_nowtime < $cache_newtime ){

$content = file_get_contents($filename);

} else {
//начинаем буферизацию

//тут выводим тизеры

//теперь забираем все что выводили из буфера и чистим его
$content = ob_get_clean();
//теперь сохраняем это дело в файл, это и есть наш кэш
file_put_contents('./superpupertizercache/tizer.dat', $content);
}
echo $content;
ob_start();

а проверить на доступность - так

$check_url = get_headers('http://www.mytizers.com/index.html');

if (strpos($check_url[0],'200')) {$mytizers = 'ok';}

думаю добавить соотв. условие несложно - если ответ тизерки отличается от 200 то берем данные из кеша, если нет то перезаписываем кеш и ток затем их выводим

webamator (http://webamator.ru) приглашает потестить сервис бесплатной оптимизации CSS и JavaScript (http://service.webamator.ru/) Занимаюсь проектами любой сложности. Качественно. Дорого. Примеры некоторых работ (http://blog.webamator.ru/category/portfolio)
seosniks
На сайте с 13.08.2007
Offline
389
#5

t3s, примерно так и работал блок, я вот думаю а если в место модуля подключить этот файл который тянет данные через фрейм, это же поможет.

Например закинуть вызов фрейма в шаблон в самый низ подвала.

R
На сайте с 17.11.2011
Offline
22
#6
seosniks:
Фреймы это не плохо, у меня коды в js
но блок парсера работает как приложение сайта, вот он мне и положил гад вчера весь сайт.


И еще есть ли что нибудь бесплатное мониторить сайты?
Может какой скрипт сделать чтоб опрашивать сайт?

Хосттракер у меня что то ничего не показывает.

Воно оно как. Ну тогда ифреймы конечно не помогут.

В твоем случае проще всего фиксировать время начала работы парсера, и, если в теч посленег8о скажем часа парсер уже работал, то останавливаться.

Время можно записывать хотя бы созданием пустого временного файла где-нить и потом считывать дату доступа к нему.

seosniks
На сайте с 13.08.2007
Offline
389
#7
rommer:
Воно оно как. Ну тогда ифреймы конечно не помогут.
В твоем случае проще всего фиксировать время начала работы парсера, и, если в теч посленег8о скажем часа парсер уже работал, то останавливаться.
Время можно записывать хотя бы созданием пустого временного файла где-нить и потом считывать дату доступа к нему.

Вот немного кода из парсера

у меня как раз фрейм и выводился. Но тут проблема именно в том что этот блок

так же получал данные из другого сайта.

 $modif=time()-@filemtime ("wather_new.html");

if ($modif<1000)
{
$bt ="<iframe src=\"wather_new.html\" width=\"180\" height=\"360\" vspace=\"0\" hspace=\"0\" scrolling=\"no\" frameborder=no></iframe>";
}


$ch = curl_init('http://источиник');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname (__FILE__)."/cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname (__FILE__)."/cookie.txt");
$text = curl_exec($ch);


Вот этот код ложил мой сайт.

Может стоит все же подключить его вызов через фрейм?

а фрейм кинуть в подвале с пикселем 1 на 1?

тогда даже при плохом исходе сайт будет нормально открываться?

а в блоке просто подключить только вызов фрейма который уже будет записан в файле

R
На сайте с 17.11.2011
Offline
22
#8
seosniks:
Вот немного кода из парсера
у меня как раз фрейм и выводился. Но тут проблема именно в том что этот блок
так же получал данные из другого сайта.



 $modif=time()-@filemtime ("wather_new.html");

if ($modif<1000)
{
$bt ="<iframe src=\"wather_new.html\" width=\"180\" height=\"360\" vspace=\"0\" hspace=\"0\" scrolling=\"no\" frameborder=no></iframe>";
}


$ch = curl_init('http://источиник');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname (__FILE__)."/cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname (__FILE__)."/cookie.txt");
$text = curl_exec($ch);




Вот этот код ложил мой сайт.

Может стоит все же подключить его вызов через фрейм?
а фрейм кинуть в подвале с пикселем 1 на 1?

тогда даже при плохом исходе сайт будет нормально открываться?
а в блоке просто подключить только вызов фрейма который уже будет записан в файле

КОнечно же он будет ложить. И правильно делает, что ложит 😂

Сразу после " if ($modif<1000)"

делайте обновление wather_new.html. Можете делать просто touch(), можете в конец дописать пробел, как угодно.

Тогда ложить не будет.

А в этом коде, то конечно, треды позависають, а новые все равно будуть открываться.

T
На сайте с 13.04.2008
Offline
67
t3s
#9
Но тут проблема именно в том что этот блок так же получал данные из другого сайта.

вот этот:

$ch = curl_init('http://источиник');

???

так проверьте его на доступность прежде, чем брать что-либо

зы

по поводу примера из поста №5

просьба модераторам поправить пример, поскольку возможности редактировать нету...

ob_start(); должен идти сразу после } else {

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий