Запрет на частое обновление страницы
•
artemon21
TEAM FOTRESS 2 PLAYER
Сообщений: 676
Сайт на DLE.Есть статическая страница,на которой через iframe выводится скрипт грабера.Все бы хорошо,но пользователь может часто обновлять страницу,тем самым нагрузить мой интернет канал. Как можно запретить частое обновление этой страницы?И чтобы ему выходило сообщение ,типа 'Вы сможете обновить страницу только через 5 мин'..
•
Sheens
Сообщений: 1 082
Лучше не запрещать обновлять страницу, а использовать кеш
--------------------
Qui quaerit reperit
•
artemon21
TEAM FOTRESS 2 PLAYER
Сообщений: 676
А как это сделать? И главное чтобы пользователь знал,что используется кэш,т.к. он смотрит онлайн результаты матчей..
•
Medic
Активный
Сообщений: 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
•
SiMM
Banned
Сообщений: 37 461
Из: «либеральных»«ценностей»
выдавать результаты матчей с задержкой в 4 часа, в случае, если речь о ставках, ИМХО, довольно сурово. ИМХО, в подобных случаях разумнее напрягать клиента - пущай сам средствами JS грабит контент и парсит его - нагрузка на сервер - минимальна
•
artemon21
TEAM FOTRESS 2 PLAYER
Сообщений: 676
Цитата(SiMM @ Jun 13 2009, 22:39)
выдавать результаты матчей с задержкой в 4 часа, в случае, если речь о ставках, ИМХО, довольно сурово.
ИМХО, в подобных случаях разумнее напрягать клиента - пущай сам средствами JS грабит контент и парсит его - нагрузка на сервер - минимальна
Время задержки будет пара минут
Цитата(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
•
SiMM
Banned
Сообщений: 37 461
Из: «либеральных»«ценностей»
Цитата(artemon21)
Время задержки будет пара минут
14400 - это 4 часа. И я всего лишь обратил внимание на эту цифру, вполне осознавая, что сменить её не составляет проблемы.
--------------------
•
Medic
Активный
Сообщений: 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
•
artemon21
TEAM FOTRESS 2 PLAYER
Сообщений: 676
Цитата(Medic @ Jun 15 2009, 18:39)
А где назначение переменной $o_scores ?
Я как раз не понял,про какое значение переменной идет речь
Цитата
Скрипт не много усложнился, но не более того. Воспользовавшись встроенным шаблонизатором мы подгружаем наш шаблон, затем заменяем в нём строку
Исходный код
{test}
на значение переменной нашего скрипта (?). Далее мы указываем, что наш шаблон должен располагаться в контенте сайта, и в завершение вызываем метод
Будь добр,подскажи,что сюда нужно вставить
•
Medic
Активный
Сообщений: 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
•
artemon21
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
•
Medic
Активный
Сообщений: 1 290
Положи то что сграбил , в переменную $o_scores_out прежде чем выполнять $tpl->set('{o_scores}', $o_scores_out);Не нужно выводить сграбленное сразу на экран , а нужно таблицу, а так же сграбленное, закладывать в переменную $o_scores_out . Тебе срочно нужно зайти на специализированные сайты по PHP и курить мануалы.Сообщение отредактировал Medic - Jun 16 2009, 15:58
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей: