Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод статистики работы скрипта, Если можно помогите 
:(
    Опции темы
Riddick
Дата 6.7.2007, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 24.6.2007

Репутация: нет
Всего: нет



Блин обыскался! Допустим у меня работает процесс и записывает все в лог файл, как получить статистику понятно. Не понятно как сделать редирект на статистику при запуске процесса, тоесть чтоб юзер запустил процесс и его сразу редиректило на страницу статсов, а процесс как работал, так и работает, пока не закончится.

Попробовал так

Код


my $t=4000;
my $i=1;

print <<EOF;

<script>
location.href="itog.cgi";
</script>

EOF

while ($i <= 4000){

#Производим нужные вычисления
#Делаем запись в лог файл

$i++;

}



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

Код


my $t=4000;
my $i=1;
my $flag=1;


while ($i <= 4000){

if ($flag == 2){

print <<EOF;

<script>
location.href="itog.cgi";
</script>

EOF
}

#Производим нужные вычисления
#Делаем запись в лог файл

$flag=2;

$i++;

}



результаты получил аналогичные.

Может гдето неправильно опять что-то делаю smile 

Это сообщение отредактировал(а) Riddick - 6.7.2007, 18:13
PM MAIL   Вверх
KSURi
Дата 6.7.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 2
Всего: 27



Код

while {$i <= 4000){

эээ, имхо так не должно быть


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
Riddick
Дата 6.7.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 24.6.2007

Репутация: нет
Всего: нет



Отредактировал, просто суть вопроса не меняется.

Это сообщение отредактировал(а) Riddick - 6.7.2007, 18:14
PM MAIL   Вверх
Nab
Дата 6.7.2007, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 25.3.2006
Где: Kiev

Репутация: 8
Всего: 37



Riddick, чет вы путаете, JavaScript здесь излишен, а по поводу процесса генерящего статистику пожалуйста подробнее. 
В большинстве случаев веб процессы не могут работать бесконечно, и просто перенаправить а продолжать работать не очень просто... Мало того что на такие действия нужны права в системе, так еще и вебсервер может иметь ограничения к примеру на время выполнения скрипта...


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
Riddick
Дата 6.7.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 24.6.2007

Репутация: нет
Всего: нет



Процесс не генерит статитстику, а работает так как ему нужно, просто после каждой итерации записывает результат в лог файл. Так вот при запуске данного скрипта юзером, браузер врятли дождется ответа потому как процесс будет работать около 2-3х часов. Отсюда следует что после запуска юзером скрипта его нужно сразу же перенаправить на другой скрипт который будет отображать данные лога. Весь затык я не пойму как перенаправить юзера.
По поводу времени выполнения, то оно как раз и неограничено.
PM MAIL   Вверх
JAPH
Дата 6.7.2007, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 1
Всего: 23



Предположу:
Код

#!perl -wT
print "Location: itog.cgi\n\n";
# <...>


P.S. А если юзеров многа (или один, но настойчивый)? И каждый по процессику. На 2-3 часа. smile


--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
Riddick
Дата 6.7.2007, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 24.6.2007

Репутация: нет
Всего: нет



Юзеров не много, счас буду проверять предположение, хотя помоему не выйдет ничего, а там кто его знает.
PM MAIL   Вверх
JAPH
Дата 6.7.2007, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 1
Всего: 23



Не вышло :(
А если
Код

#!perl -w
use strict; use warnings;
print "Location: itog.cgi\n\n";
$| = 1;
exec 'perl -w longwork.pl';


Это сообщение отредактировал(а) JAPH - 7.7.2007, 12:51


--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
dya
Дата 8.7.2007, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 27.6.2007

Репутация: нет
Всего: 1



Хм, возможно я не правильно понял вопрос …
Но не проще ли будет, непосредственно на этой страницы отображать процесс? То есть выводить логии никуда не переходя?

А так возможно вам это подойдёт.
Код
#Переадресация произойдет через 0 секунд.
print '<meta http-equiv=Refresh content="0; URL=/script.html">';


Это сообщение отредактировал(а) dya - 8.7.2007, 21:02
PM MAIL   Вверх
JAPH
Дата 8.7.2007, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 1
Всего: 23



dya, 
Цитата
Переадресация произойдет через 0 секунд.
 Вы ошибаетесь. Проверьте на таком скрипте, через сколько произойдёт переадресация:
Код

#!perl -wT
print "Content-type: text/html; charset=windows-1251\n\n";
print '<meta http-equiv=Refresh content="0; URL=/script.html">';
sleep 10;


Ну, хорошо, по сути самой вашей идеи. Представьте: каждый заход на страницу порождает двух-трёхчасовой процесс. А вы предлагаете, запустив один такой процессик, запускать сразу ещё один, а потом ещё, ... Пожалейте сервер smile


--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
dya
Дата 9.7.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 27.6.2007

Репутация: нет
Всего: 1



JAPH, 
http://www.html-reference.com/META_httpequiv_refresh.htm

Добавлено через 2 минуты и 34 секунды
http://www.softtime.ru/javascript/redirecthtml.php
PM MAIL   Вверх
JAPH
Дата 9.7.2007, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 1
Всего: 23



Гм, теория - это хорошо, только ничё нового я не узнал smile

Цитата из первого поста:
Цитата
не получается, редир происходит, но только после завершения процесса

Здесь то же. Пока скрипт не отработает, редиректа не будет. То есть 0 секунд после того, как загрузится страница, а это после того, как отработает скрипт, в сумме 10 секунд, а в задаче автора 2-3 часа.
+ предыдущий пост про суть вашей идеи.


--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
amg
Дата 9.7.2007, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 1
Всего: 50



Может, я чего не понимаю, но почему не сделать так, чтобы процесс создал потомка, который потом будет в течение 2-3 часов что-то делать, а сам родительский процесс сделает редирект куда надо и тут же завершиться.
PM MAIL   Вверх
Riddick
Дата 9.7.2007, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 24.6.2007

Репутация: нет
Всего: нет



А на сколько реально с потомком? Мне не нужен именно редирект, мне нужно чтобы процесс работал, а браузер отображал его работу. 
Про потомка тоже не понятно, такое действительно может быть что потомок пашет а родитель завершил работу? Если да это хорошо, попробую, если не получится отпишу.
PM MAIL   Вверх
amg
Дата 10.7.2007, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 1
Всего: 50



Цитата(Riddick @  9.7.2007,  23:09 Найти цитируемый пост)
такое действительно может быть что потомок пашет а родитель завершил работу?

Да, конечно. Демонизация называется.
Вот это работает в linux. В windows, скорее всего, работать не будет, но, наверное, и там можно что-нибудь придумать.
Код

use POSIX 'setsid';

defined(my $pid = fork) or die "Can't fork: $!";

if ($pid) {
  print "I'm $$, my child is $pid. Die...\n";
  # Код редиректа
  exit;
}

setsid or die "Can't start a new session: $!";
sleep 5;
print "\nI'm $$, my parent is ", getppid;
# Код получения статистики
exit;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0637 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.