Ответить Создать тему

Запрет на частое обновление страницы

artemon21
post Jun 13 2009, 18:54 
Отправлено #1


TEAM FOTRESS 2 PLAYER

Сообщений: 676



Сайт на DLE.Есть статическая страница,на которой через iframe выводится скрипт грабера.Все бы хорошо,но пользователь может часто обновлять страницу,тем самым нагрузить мой интернет канал.

Как можно запретить частое обновление этой страницы?И чтобы ему выходило сообщение ,типа 'Вы сможете обновить страницу только через 5 мин'..
Profile CardPM
  0/0  
Sheens
post Jun 13 2009, 19:57 
Отправлено #2




Сообщений: 1 082



Лучше не запрещать обновлять страницу, а использовать кеш

--------------------
Qui quaerit reperit
Profile CardPM
  0/0  
artemon21
post Jun 13 2009, 20:13 
Отправлено #3


TEAM FOTRESS 2 PLAYER

Сообщений: 676



А как это сделать? И главное чтобы пользователь знал,что используется кэш,т.к. он смотрит онлайн результаты матчей..
Profile CardPM
  0/0  
Medic
post Jun 13 2009, 20:37 
Отправлено #4


Активный

Сообщений: 1 290



Скрипт грабера подключи как модуль для DLE: инструкция.
Результат грабинга положи в кеш DLE, вот кусок моих модулей:

Исходный код
<?
if(!defined('DATALIFEENGINE'))
{
 die("Hacking attempt!");
}

// Проверяем кеш на свежесть 14400 в секундах
if(get_vars("name_time") > $_TIME - 14400)
{
$name_out = get_vars("name_file");

$tpl->load_template('name.tpl');
$tpl->set('{name}', $name_out);
$tpl->compile('content');
$tpl->clear();
}
else
{


// Грабим
// Тут нужно поставить код грабера

   $tpl->load_template('name.tpl');
   $tpl->set('{name}', $name_out);
   $tpl->compile('content');
   $tpl->clear();

// Ложим в кеш результат грабинга
   set_vars("name_time", $_TIME);
   set_vars("name_file", $name_out);
}

?>


Сообщение отредактировал Medic - Jun 13 2009, 21:01
Profile CardPM
  0/0  
SiMM
post Jun 13 2009, 21:39 
Отправлено #5


Banned

Сообщений: 37 461
Из: «либеральных»«ценностей»



выдавать результаты матчей с задержкой в 4 часа, в случае, если речь о ставках, ИМХО, довольно сурово.
ИМХО, в подобных случаях разумнее напрягать клиента - пущай сам средствами JS грабит контент и парсит его - нагрузка на сервер - минимальна
Profile CardPM
  0/0  
artemon21
post Jun 15 2009, 16:55 
Отправлено #6


TEAM FOTRESS 2 PLAYER

Сообщений: 676



Цитата(SiMM @ Jun 13 2009, 22:39)
выдавать результаты матчей с задержкой в 4 часа, в случае, если речь о ставках, ИМХО, довольно сурово.
ИМХО, в подобных случаях разумнее напрягать клиента - пущай сам средствами JS грабит контент и парсит его - нагрузка на сервер - минимальна
*

Время задержки будет пара минут wink.gif

Цитата(Medic @ Jun 13 2009, 21:37)
Скрипт грабера подключи как модуль для DLE: инструкция.
Результат грабинга положи в кеш DLE, вот кусок моих модулей:

Исходный код
<?
if(!defined('DATALIFEENGINE'))
{
 die("Hacking attempt!");
}

// Проверяем кеш на свежесть 14400 в секундах
if(get_vars("name_time") > $_TIME - 14400)
{
$name_out = get_vars("name_file");

$tpl->load_template('name.tpl');
$tpl->set('{name}', $name_out);
$tpl->compile('content');
$tpl->clear();
}
else
{
// Грабим
// Тут нужно поставить код грабера

   $tpl->load_template('name.tpl');
   $tpl->set('{name}', $name_out);
   $tpl->compile('content');
   $tpl->clear();

// Ложим в кеш результат грабинга
   set_vars("name_time", $_TIME);
   set_vars("name_file", $name_out);
}

?>

*


спасибо..Правда у меня не получилось сделать скрипт как модуль.

Мой файл \engine\modules\o_scores.php

Исходный код
<?php
echo '<table width="300">';
echo '<tr><td>';
foreach(file('http://results.marathonbet.com/liveresults.php?r%5B%5D=%C2%EE%EB%E5%E9%E1%EE%EB&r%5B%5D=%C3%E0%ED%E4%E1%EE%EB&r%5B%5D=%CF%EB%FF%E6%ED%FB%E9+%F4%F3%F2%E1%EE%EB&r%5B%5D=%D2%E5%ED%ED%E8%F1&r%5B%5D=%D4%F3%F2%E1%EE%EB') as $str)
{
$find.=$str;
}
ereg("onClick=\"ss\(2\)\">.{1,}<font size=\"1\" color=\"black\"><i>", $find, $fin);
echo strtr($fin[0], array('onClick="ss(2)">' => ''));
echo '</td></tr></table>';

 // Подгружаем шаблон
    $tpl->load_template('o_scores.tpl');
    $tpl->set('{o_scores}', $o_scores);
    $tpl->compile('content');
    $tpl->clear();
?>


Файл шаблона \templates\My\o_scores.tpl

Исходный код
<html>
<body>
{o_scores}
</body>
</html>


И вот,что с сайтом (скриншот): _http://i028.radikal.ru/0906/ec/999465447394.png
Profile CardPM
  0/0  
SiMM
post Jun 15 2009, 16:57 
Отправлено #7


Banned

Сообщений: 37 461
Из: «либеральных»«ценностей»



Цитата(artemon21)
Время задержки будет пара минут
14400 - это 4 часа. И я всего лишь обратил внимание на эту цифру, вполне осознавая, что сменить её не составляет проблемы.

--------------------
Profile CardPM
  0/0  
Medic
post Jun 15 2009, 17:39 
Отправлено #8


Активный

Сообщений: 1 290



Цитата(artemon21 @ Jun 15 2009, 17:55)
И вот,что с сайтом (скриншот): _http://i028.radikal.ru/0906/ec/999465447394.png
*

Проанализируй сграбленный контент, видимо зацепил лишние HTML коды.

Исходный код
$tpl->set('{o_scores}', $o_scores);

А где назначение переменной $o_scores ?

Сообщение отредактировал Medic - Jun 15 2009, 17:40
Profile CardPM
  0/0  
artemon21
post Jun 15 2009, 18:17 
Отправлено #9


TEAM FOTRESS 2 PLAYER

Сообщений: 676



Цитата(Medic @ Jun 15 2009, 18:39)
А где назначение переменной $o_scores ?
*


sad.gif
Я как раз не понял,про какое значение переменной идет речь unsure.gif
Цитата
Скрипт не много усложнился, но не более того. Воспользовавшись встроенным шаблонизатором мы подгружаем наш шаблон, затем заменяем в нём строку
Исходный код
{test}

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


Будь добр,подскажи,что сюда нужно вставить smile.gif
Profile CardPM
  0/0  
Medic
post Jun 16 2009, 14:38 
Отправлено #10


Активный

Сообщений: 1 290



Исходный код
<?
if(!defined('DATALIFEENGINE'))
{
die("Hacking attempt!");
}

// Проверяем кеш на свежесть 14400 в секундах
if(get_vars("name_time") > $_TIME - 14400)
{
$name_out = get_vars("name_file");

$tpl->load_template('name.tpl');
$tpl->set('{name}', $name_out);
$tpl->compile('content');
$tpl->clear();
}
else
{

// Грабим
// Тут нужно поставить код грабера

  $tpl->load_template('name.tpl');
  $tpl->set('{name}', $name_out);
  $tpl->compile('content');
  $tpl->clear();

// Ложим в кеш результат грабинга
  set_vars("name_time", $_TIME);
  set_vars("name_file", $name_out);
}

?>


// Грабим
// Тут нужно поставить код грабера
Вот там то и нужно сграбить контент, затем поместить в переменную $name_out, которую потом и передать в {name} с помощью $tpl->set('{name}', $name_out);

Я давал ссылку на создание модуля для DLE, советую выполнить данный пример, и как следует проанализировать код.

Сообщение отредактировал Medic - Jun 16 2009, 14:39
Profile CardPM
  0/0  
artemon21
post Jun 16 2009, 15:41 
Отправлено #11


TEAM FOTRESS 2 PLAYER

Сообщений: 676



Делал все как там написано.
Щас попробывал вот так engine\modules\o_scores.php
Цитата
<?
if(!defined('DATALIFEENGINE'))
{
die("Hacking attempt!");
}

// Проверяем кеш на свежесть 14400 в секундах
if(get_vars("o_scores_time") > $_TIME - 60)
{
$name_out = get_vars("o_scores_file");

$tpl->load_template('o_scores.tpl');
$tpl->set('{o_scores}', $o_scores_out);
$tpl->compile('content');
$tpl->clear();
}
else
{


echo '<table width="300">';
echo '<tr><td>';
foreach(file('http://results.marathonbet.com/liveresults.php?r%5B%5D=%C1%E0%F1%EA%E5%F2%E1%EE%EB&r%5B%5D=%C1%E5%E9%F1%E1%EE%EB&r%5B%5D=%D2%E5%ED%ED%E8%F1&r%5B%5D=%D4%F3%F2%E1%EE%EB&r%5B%5D=%D5%EE%EA%EA%E5%E9+%ED%E0+%F2%F0%E0%E2%E5') as $str)
{
$find.=$str;
}
ereg("onClick=\"ss\(2\)\">.{1,}<font size=\"1\" color=\"black\"><i>", $find, $fin);
echo strtr($fin[0], array('onClick="ss(2)">' => ''));
echo '</td></tr></table>';

  $tpl->load_template('o_scores.tpl');
  $tpl->set('{o_scores}', $o_scores_out);
  $tpl->compile('content');
  $tpl->clear();

// Ложим в кеш результат грабинга
  set_vars("name_time", $_TIME);
  set_vars("name_file", $o_scores_out);
}

?>

Выделенное надо заменять?
_____
С таким файлом все также как и было.=>Результат грабера сверху,выше шапки сайта.Наверное что-то не так с templates\My\o_scores.tpl

Исходный код
<html>
<body>
{o_scores}
</body>
</html>


Сообщение отредактировал artemon21 - Jun 16 2009, 15:44
Profile CardPM
  0/0  
Medic
post Jun 16 2009, 15:51 
Отправлено #12


Активный

Сообщений: 1 290



Положи то что сграбил, в переменную $o_scores_out прежде чем выполнять $tpl->set('{o_scores}', $o_scores_out);

Не нужно выводить сграбленное сразу на экран, а нужно таблицу, а так же сграбленное, закладывать в переменную $o_scores_out.

Тебе срочно нужно зайти на специализированные сайты по PHP и курить мануалы.

Сообщение отредактировал Medic - Jun 16 2009, 15:58
Profile CardPM
  0/0  

ОтветитьTopic Options
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
Быстрый ответ
Кнопки кодов
 Расширенный режим
 Нормальный режим
    Закрыть все тэги


Открытых тэгов: 
Введите сообщение
Смайлики
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
         
Показать все

Опции сообщения