The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Здравствуйте! возможна ли циклическая загрузка страниц в бра..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"Здравствуйте! возможна ли циклическая загрузка страниц в бра..."  
Сообщение от Dmitriy email(??) on 10-Май-07, 17:47 
Если кто сталкивался подскажите пожалуйста - хочу в написать CGI(Perl)-скрипт при открытии браузером, который бы с определённой периодичностью загрузал бы по очереди несколько web-страниц. Пробовал модуль LWP::Simple он все указанные мной страницы загружает в одно окно браузера и останавливается, т.е. все пять страниц размещаются в одном окне, а мне нужно симитировать пользователя который ходит поочерёдно по пяти страницам с определённым периодом времени. Заранее благодарю.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Здравствуйте! возможна ли циклическая загрузка страниц в бра..."  
Сообщение от andy email(??) on 11-Май-07, 06:22 
То есть, одна страница должна сменять другую через некоторое время?
Тогда организовать массив нужных ссылок, в заголовки вставлять refresh, в урле как параметр передавать индекс необходимого элемента массива. Что-то типа

@urls=(
       "http://site.ru/page1", "http://site.ru/page2",
       "http://site.ru/page3", "http://site.ru/page4"
       );
# сколько секунд показывать страницу пользователю
$timeout = 5;
# получаем индекс запрошенной страницы (0,1,2 или 3)
$current_url_num = $ENV{QUERY_STRING};
# что грузить в следующий раз (мотаем по кругу)
$next_url_num = $current_url_num == scalar(@urls) ? 0 : $current_url_num++;
# формируем новую ссылку
$next_url = $ENV{SCRIPT_NAME} .'?'. $next_url_num;

print "Refresh: $timeout; url=$urls[$next_url_num]\n";
print "Pragma: no-cache\n";                      # ибо нефиг
print "Cache-Control: no-cache\n";               # эти
print "Expires: Fri, 30 Oct 1998 14:19:41 GMT\n" # документы кэшировать
print "Content-Type: text/html\n";
print "\n";

get_page_and_print_it( $urls[$current_url_num] );


sub get_page_and_print_it($)  {
  my $url = shift;
  # закачка и печать документа $url
  # ...
}

__END__


писалось быстро, без проверок, чтобы просто показать идею

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Здравствуйте! возможна ли циклическая загрузка страниц в бра..."  
Сообщение от Dmitriy email(??) on 11-Май-07, 09:40 
спасибо огромное запомощь,
только вот получается такая штука - при открытии браузером делается пауза 5 сек потом идём к первому элементу массива (первый url) соответственно управление передаётся этой странице и основной скрипт уже теряет управление, а загрузившаяся страница не знает (да и не должна знать) что нужно через пять секунд грузить другую. Вобщем в итоге - грузиться перваяя страница и на этом всё останавливается.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Здравствуйте! возможна ли циклическая загрузка страниц в бра..."  
Сообщение от andy email(??) on 11-Май-07, 09:58 
нет.
Допустим, наш скрипт доступен по http://myownsite.ru/cgi-bin/rollover.cgi
Строка
  $next_url = $ENV{SCRIPT_NAME} .'?'. $next_url_num;
сформирует url вида /cgi-bin/rollover.cgi?1
число на конце - индекс эл-та массива, где хранится нужный урл. То есть будет запрошен тот же rollover.cgi, но уже с другим параметром. А уж rollover в функции get_page_and_print_it должен скачать урл, находящийся в массиве под индексом $current_url_num, убрать из ответа http`шные заголовки и отправить страницу в stdout (print`ом ). Заголовки мы подставляем свои перед вызовом функции, так как мы хотим иметь рефреш.

Кстати, чтобы первый раз нормально отработало, надо бы поменять
$current_url_num = $ENV{QUERY_STRING};
на
$current_url_num = $ENV{QUERY_STRING} || 0;
при отсутствии параметра в запросе принять, что пользователь хочет первую по списку страницу

Короче, нечто типа этого. Вызывается один и тот же скрипт, но с разными параметрами. На основе полученного параметра скрипт решает, какую страницу грузить.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Здравствуйте! возможна ли циклическая загрузка страниц в бра..."  
Сообщение от andy email(??) on 11-Май-07, 10:01 
>Вызывается один и тот же скрипт, но с
>разными параметрами. На основе полученного параметра скрипт решает, какую страницу грузить
подставляя свои заголовки, где указан рефреш через энцать секунд на самого себя


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Здравствуйте! возможна ли циклическая загрузка страниц в бра..."  
Сообщение от Dmitriy email(??) on 11-Май-07, 11:05 
Всё! Понял Вашу идею, наверное так длжно работать, сейчас буду доводить до ума :), кстати у  Вас завидный стиль программирования я пока так не умею или не привык. Спасибо большое за помощь!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Здравствуйте! возможна ли циклическая загрузка страниц в бра..."  
Сообщение от andy email(??) on 11-Май-07, 11:26 
>кстати у  Вас завидный стиль программирования
спасибо за комплимент, если честно, никогда так не думал :)
Просто стараюсь сначала сформулировать порядок действий на человеческом языке, а потом описать то же самое в терминах машинного языка, начиная с самого высокого уровня абстракции и постепенно спускаясь вглубь, описывая более детальные вещи.
Приходит со временем, после того, как пару раз попадется непонятный запутанный код без комментариев и ты долго материшь кодера, а потом оказывается, что это писал ты сам с год назад.

>Спасибо большое за помощь!
а пожалуйста :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Здравствуйте! возможна ли циклическая загрузка страниц в бра..."  
Сообщение от Dmitriy email(??) on 11-Май-07, 15:45 
В общем получилось так (за простоватый стиль прошу простить - учусь)

use LWP::Simple;

@urls=("http://www.server.ru/index1.html",
       "http://www.server.ru/index2.html",
       "http://www.server.ru/index3.html",
       "http://www.server.ru/index4.html");

$x=scalar(@urls)-1;
# сколько секунд показывать страницу пользователю
$timeout = 5;
# получаем индекс запрошенной страницы (0,1,2 или 3)
$current_url_num = $ENV{QUERY_STRING} || 0;
# что грузить в следующий раз (мотаем по кругу)
if ($current_url_num>=$x) {$current_url_num="-1";}
  $current_url_num = $current_url_num+1;
  $next_url_num=$current_url_num;
# формируем новую ссылку
$next_url = $ENV{SCRIPT_NAME} ."?".$next_url_num;

print "Refresh: $timeout; url=$next_url\n";
print "Pragma: no-cache\n";                      # ибо нефиг
print "Cache-Control: no-cache\n";               # эти
print "Expires: Fri, 30 Oct 1998 14:19:41 GMT\n"; # документы кэшировать
print "Content-Type: text/html\n\n";

$content = get($urls[$next_url_num]); # получаем док по ссылке
die "Couldn't get it!" unless defined $content;
print $content; # и выводим на нашу страничку


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру