Автор Тема: апгрейд скрипта  (Прочитано 4532 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн aner

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
апгрейд скрипта
« : 16 Января 2004, 01:10:35 »
Вот, см. ниже самый банальный скрипт, выводящий случайным образом картинку из папки ук. в сопутствующем ему файле "конфиг."(если в папке одна, то будет выводить одну...)

Как к нему приписать время, чтоб он делал это лишь определенное количество дней, а потом прекращал?
Реально это сделать?

require "image.config";
opendir(DIR,"$imagedir");
@jpg=grep(/jpg\\Z/,readdir(DIR));
@gif=grep(/gif\\Z/,readdir(DIR));
push(@images,@jpg);
push(@images,@gif);
closedir(DIR);
srand();
$SIZE=@images;
$randnum=int rand $SIZE;
print "Content-type: text/html\\n\\n";
$image="$imageurl/$images[$randnum]";
print qq(\\n);
pro

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
апгрейд скрипта
« Ответ #1 : 16 Января 2004, 08:04:22 »
Цитировать
aner:
Реально это сделать?
Вполне.
Только где то надо хранить "опорное" время, т.е. время от которого начинают отсчитывать то самое количество дней. Оно сверяется с текущим и по результу проверки производятся дальнейшие действия.

Или тебе нужно конкретно расписать как взять текущее время, как его сохранить в файле и т.д.?
Все болезни от нервов, только сифилис от удовольствия

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
апгрейд скрипта
« Ответ #2 : 16 Января 2004, 10:22:08 »
aner
Функция time возвращает текущее время. Во время старта показа картинки получи опорное время, потом относительно него и прыгай;

$time = time;
if ($time > ($time_start+(86400*$kol_vo_day))) {Не показывать картинку}
else {Показывать картинку}

Оффлайн aner

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
апгрейд скрипта
« Ответ #3 : 17 Января 2004, 19:16:29 »
с функией \'time\' все ясно, спасибо,
а вот "опорное время" может стоить хранить в файле onfig\'a,
коль скоро к нему и так обращается скрипт?
счас он состоит из двух сторочек:
$imagedir=.....
$imageurl=.....

подскажите, как правильно в нем прописать опорное время?
pro

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
апгрейд скрипта
« Ответ #4 : 17 Января 2004, 19:24:02 »
Ну и пропиши третьей строчкой

Интересно, а зачем тебе все это?
Все болезни от нервов, только сифилис от удовольствия

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
апгрейд скрипта
« Ответ #5 : 17 Января 2004, 19:43:35 »
aner

Цитировать
подскажите, как правильно в нем прописать опорное время?


Как хочешь...например сделай небольшой скрипт, типа:

#!/usr/bin/perl

my $time = time;
print "Content-type: text/html\\n\\n";
print qq "$time";
exit;

Получишь на экране текущее время, его записываешь в файл image.config

$imagedir=.....
$imageurl=.....
$imagetime=....
$imageday=.... - количество дней
1;

Скрипт исправляешь на:
require "image.config";
my $time = time;
if ($time > ($imagetime+(86400*$imageday))) {
opendir(DIR,"$imagedir");
@jpg=grep(/jpg\\Z/,readdir(DIR));
@gif=grep(/gif\\Z/,readdir(DIR));
push(@images,@jpg);
push(@images,@gif);
closedir(DIR);
srand();
$SIZE=@images;
$randnum=int rand $SIZE;
print "Content-type: text/html\\n\\n";
$image="$imageurl/$images[$randnum]";
print qq(\\n);
}
else {
print "Content-type: text/html\\n\\n";
print qq \'Нет картинки\';
}

И все...

Оффлайн aner

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
апгрейд скрипта
« Ответ #6 : 17 Января 2004, 23:03:33 »
2 phoinix -
спасибо огромное, что время потратили...

один вопрос, что там за "1;" у вас стоит на след. строке после $imageday?

я перл совсем не знаю, у меня проблема с синтаксисом, а сервер как раз все ругается на эту строчку:
$imageday=2 (типа 2 дня)

я пробовал и так ставить:
$imagetime="1074367748"
$imageday="1074377748"

все равно пишет следущее:
>>Scalar found where operator expected at image.config near "$imageday"
>>Missing semicolon on previous line
pro

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
апгрейд скрипта
« Ответ #7 : 18 Января 2004, 01:22:35 »
Цитировать
Missing semicolon on previous line

Точку с запятой не забываем после оператора.:)
2B OR NOT 2B = FF

Оффлайн aner

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
апгрейд скрипта
« Ответ #8 : 18 Января 2004, 04:17:28 »
да, действительно, глупо что забыл, что не Си...

но все равно в логах при каждой загрузке скрипта пишется строчка:
Premature end of script headers, что-то в нем не тово...

А главное, скрипт не выдает картинки, какое бы значение не ставил
в $imageday, сразу переходит к пункту "else" функции и на экране
появляется надпись "нет картинки"...
что-то в приведенной формуле расчета времени, наверно не так?
pro

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
апгрейд скрипта
« Ответ #9 : 18 Января 2004, 12:26:18 »
aner

Угу косяк... в условии ставь "меньше" а не "больше"...

Цитировать
но все равно в логах при каждой загрузке скрипта пишется строчка:
Premature end of script headers, что-то в нем не тово...


Ищи в скрипте, скорей всего у тебя где-то print передв передачей заголовка браузера стоит...

[OFF]Что то я не пойму, ты логику скрипта замечаешь? или так "лобовым" копированием занимаешься?[/OFF]

Оффлайн aner

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
апгрейд скрипта
« Ответ #10 : 18 Января 2004, 16:12:10 »
нет, здесь дело было не в том... (я же ж не совсем уж...)
сторока в логах - это был сопутствующий момент неправильной постановки знака ">"

все я поправил, итеперь no problem
еще раз, благодарствуйте!
pro

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28