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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обновление архивов 
:(
    Опции темы
Гость_Alex
  Дата 22.5.2005, 06:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Не подскажете как отследить обновление архивов?
Периодическая закачка с помощью LWP и сравнение размеров файлов не подойдет... (Архивы могут быть достаточно большими)
Можно ли как-нибудь получить время модификации архива?

  Вверх
korob2001
Дата 22.5.2005, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Что ты подразумеваешь под словом архив???

Это сообщение отредактировал(а) korob2001 - 22.5.2005, 09:42


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Гость_Alex
Дата 22.5.2005, 22:10 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











*.zip
*.rar
На данный момент меня интересуют файлы указанных форматов.
Хотя вопрос можно и обобщить.
В общем случае это может относиться и к фаилам *.mp3 и т.д (размеры которых в среднем от 500К и выше).
Маленькие файлы, в крайнем случае, можно периодически заливать к себе и сравнивать размеры старого и нового.
Хотя это тоже не самый лучший выход.
А как поступить с большими файлами (меня интересуют файлы до 5 метров)?
Здесь начинаешь ценить время с учетом последующей обработки и ограничения на время работы скрипта.
Плюс (возможно) оплата трафика. Тогда уж точно часто закачивать большие файлы не получится...
  Вверх
korob2001
Дата 22.5.2005, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Попробуй это:
Код

my $last_mod = ( stat( $file ) )[9];

В переменной будет сохранено время в секундах с начала эпохи, последней модификации файла.

Это сообщение отредактировал(а) korob2001 - 22.5.2005, 23:01


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Гость_Alex
Дата 23.5.2005, 07:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я так уже пробовал
Так можно отследить только время модификации своих файлов (на своем компе или в домене, если запустить там же скрипт)
А мне надо узнать время модификации файлов независимо от того, где они лежат...
Может, правда, я что-то не так делаю, но
Код

my $file='http://www.../data.zip';
my $last_mod = ( stat( $file ) )[9];
print $last_mod;

ничего не выдает
  Вверх
korob2001
Дата 23.5.2005, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Хех smile , а кто же тебе даст такую информацию??? Исполняемый файл должен лежать там же, где и проверяемый архив. А вообще, можешь обьяснить зачем тебе это нужно??? Наверняка есть решение более актуальное.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Гость_Alex
Дата 23.5.2005, 22:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
Хех, а кто же тебе даст такую информацию??? Исполняемый файл должен лежать там же, где и проверяемый архив.

В принципе ведь можно посмотреть время модификации файлов, если загружать их не в лоб, а, например, указав в строке адреса браузера только путь к папке. Разумеется, если доступ открыт. Значит должно быть возможно получение этого времени программно.

Цитата
А вообще, можешь обьяснить зачем тебе это нужно???

Хочу сделать что-то вроде сборника прайс-листов. Вернее работа уже идет. Теперь понемногу оптимизирую код.

Цитата
Наверняка есть решение более актуальное.

Наверняка есть. Только я до него пока не дошел. Причем есть по крайней мере один сайт по такой же тематике. Там ребята размахнулись не по-детски. Уже пару лет как с этим работают. У меня запросы поскромнее - немного другие планы на это, но как знать smile
  Вверх
korob2001
Дата 24.5.2005, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Цитата

В принципе ведь можно посмотреть время модификации файлов, если загружать их не в лоб, а, например, указав в строке адреса браузера только путь к папке. Разумеется, если доступ открыт. Значит должно быть возможно получение этого времени программно.

smile Я как-то не сталкивался с таким подходом. Ведь время модификации не может вернуть папка smile, его должно возвращать что-то более разумное, наприемер исполняемый файл, ну или сервер. Кстати о папках, если ты видишь в адресной строке такой путь:
http://host.ru/struct/archive/
Это ещё не значит что ты обращаешься к каталогу, просто сервер настроен так, что когда ты указываешь такой путь, то запускается определённый скрипт, который тебе и выдаёт информацию. Это делается как правило, что бы скрыть пути такого вида:
http://host.ru/struct/erchive/archive.pl?id=021242&sid=1245145633&act=show
Причины для такого сокрытия могут быть разные. Вобщем папка не вернёт тебе время обновления архивов, которые находятся в ней.

Или я тебя не допонял или ты не допояснил задачи. smile

Цитата

Хочу сделать что-то вроде сборника прайс-листов. Вернее работа уже идет. Теперь понемногу оптимизирую код.

Т.е. ты грузишь архивы на сервер. Наверное для того, что бы потом можно было их как-то оттуда скачать??? Если да, то ты должен их как-то выводить, например в html код, где юзер может нажать на ссылку и скачать архив. Как правило, это делает программа написанная на серверном языке: Perl, PHP, ASP и т.д. Вот она, при генерации ссылок пусть и узнаёт время последнего обновления архива и выдаёт его на той же странице.
Или я опять не верно понимаю??? smile


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Sadok
Дата 24.5.2005, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я думаю, wget (возможно curl, не работал с ним) спасет отца русской демократии. Тут же надо анализировать ответы серера (Last-modified, например)

Это сообщение отредактировал(а) Sadok - 24.5.2005, 08:48
PM   Вверх
wladk
Дата 24.5.2005, 11:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Пример из книги
Network Programming with Perl
http://www.modperl.com/perl_networking/

Код

#!/usr/bin/perl
# file: mirror_rfc.pl
# Figure 9.5: Mirror RFCs from www.faqs.org

use strict;
use LWP;

use constant RFCS => 'http://www.faqs.org/rfcs/';

die "Usage: mirror_rfc.pl rfc1 rfc2...\n" unless @ARGV;

my $ua       = LWP::UserAgent->new;
my $newagent = 'mirror_rfc/1.0 (' . $ua->agent .')';
$ua->agent($newagent);

while (defined (my $rfc = shift)) {
  warn "$rfc: invalid RFC number\n" && next unless $rfc =~ /^\d+$/;
  my $filename = "rfc$rfc.html";
  my $url = RFCS . $filename;

  my $response = $ua->mirror($url,$filename);
  print "RFC $rfc: ",$response->message,"\n";
} 


Делает, помоему, то что тебе надо, закачивает документ с сервера на локальную машину, если только документ на серверее имеет более позднюю дату изменения, чем локальный.
  Вверх
Гость_Alex
Дата 24.5.2005, 23:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
http://host.ru/struct/archive/

Если указать данный путь, выдается что-то вроде
Name Last modified Size Description
--------------------------------------------------------------------------------
Parent Directory 12-May-2005 06:22 -
f1.htm 18-May-2005 08:00 22k
f10.htm 18-May-2005 08:00 24k
f11.htm 18-May-2005 08:00 24k
.................................................................
Цитата
Т.е. ты грузишь архивы на сервер. Наверное для того, что бы потом можно было их как-то оттуда скачать???

Я гружу их на сервер, потом парсю и оставляю в *.csv формате для запросов пользователей...

На счет последующих советов - большое спасибо, попробую, может что-нибудь да выйдет...
Если нет, еще раз к Вам обращюсь smile
  Вверх
Гость_Alex
Дата 26.5.2005, 18:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











На счет первого совета:
Цитата
Я думаю, wget спасет отца русской демократии

Скорее всего не спасет
Я еще с ним не возился, хотя судя по возможностям (сегодня просмотрел документацию) полезная программка.
Однако есть два нюанса:
1) при проверке обновления он сравнивает дату сохраненного файла и закачиваемго. Таким образом необходимо у себя держать архивы. А их размеры сопоставимы с размерами полученных после обработки *.csv-файлов. Если архивов немного, тогда без разницы, в противном случае.....
2) Т.к. это прайс-листы, то имена архивов бывает, что совпадают (например, price.zip). При этом их придется размещать по разным папкам, а это лиший напряг. Его тоже, в принципе, можо решить, но должно же быть более тривиальное решение!!!
Может, правда, не нашел того, что нужно, но остается надеяться на второй вариант, хотя сходу он не пошел.
Ждите завтра с новыми вопросами либо с положительным результатом smile
  Вверх
korob2001
Дата 27.5.2005, 03:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



При загрузке на сервер, генерируй новое имя архиву, и избавишься от проблемы указанной во втором пункте.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Гость_Alex
Дата 27.5.2005, 06:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
При загрузке на сервер, генерируй новое имя архиву

Пробовал еще вчера вечером, но в оношении wget я так и не нашел - позволяет ли он изменять имя файла.
Однако по крайней мере это позволяет сделать приведенный выше перловский код.
Таким образом, в итоге на одну проблему меньше.
Однако другая проблема осталась: при проверке обновления происходит сравнение дат сохраненного файла и закачиваемго. А следовательно, как я выше говорил, удваивается потребляемое пространство, что на определенном этапе все равно потребует решения!!! Как тут ни крути!
Вопрос остался вопросом, хотя кое-какие продвижения все-таки есть smile
  Вверх
korob2001
Дата 27.5.2005, 06:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Гость_Alex - ну ты и намутил воды. smile
Я нифига не врубаюсь в смысл всего этого.

Вот как я тебя понимаю:
Есть некоторый хост, на который кто-то заливает архивы, так же он ( кто-то ) может проматривать список архивов и скачивать их.

Я тебя правильно понимаю??? Или эти архивы разбросаны по сети???

Это сообщение отредактировал(а) korob2001 - 27.5.2005, 06:50


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


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

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


 




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


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

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