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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить, что файл еще пишется на диск, для того чтобы не обрабатывать неполный  
:(
    Опции темы
sergderg
Дата 9.2.2009, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день!
Есть скрипт для сканирования каталога и обработки  всех файлов, удовлетворяющих заданной маске.
С некоторой периодичностью в сканируемый каталог попадают новые файлы, при этом, если файл оказывается достаточно большого размера, пишется он на диск не сразу и появляется вероятность начать обработку неполного файла. 
Как узнать что файл еще пишется на диск? 
Спасибо
PM MAIL   Вверх
xoma
Дата 9.2.2009, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



воспользуйся блокировкой файла при записи
PM MAIL WWW   Вверх
sergderg
Дата 9.2.2009, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(xoma @ 9.2.2009,  10:15)
воспользуйся блокировкой файла при записи

Вопрос-то и возник оттого, что механизм блокировки мне не помог.
Файл в сканируемый каталог передается по FTP. 
Блокировка устанавливается, не смотря на то, что файл в этот момент еще пишется на диск:

Код

     unless (flock(FILE, 2)) {
          die "can't get write-lock!\n";
     }

PM MAIL   Вверх
Валерия
Дата 9.2.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну кривой способ, это прочитать размер файла два раза, с промежутком времени, и если не изменился - значит уже не записывается smile
PM MAIL   Вверх
sergderg
Дата 9.2.2009, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Валерия @ 9.2.2009,  16:33)
Ну кривой способ, это прочитать размер файла два раза, с промежутком времени, и если не изменился - значит уже не записывается smile

Да, я уже подумывал над этим, но все-таки это опять же задержка в обработке, да и надежность такого способа не внушает доверия  smile 
Должен ведь быть нормальный способ.
PM MAIL   Вверх
FooBar
Дата 9.2.2009, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



PM MAIL   Вверх
aksined
Дата 10.2.2009, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



если Вы сами писали скрипт, который обрабатывает файлы, и можете его изменить,
может быть изменить логику работы так,
чтобы скрипт, который забирает файлы по ФТП сам запускал обработчик после окончания закачки?

Кроме того, можно привязываться не к файлу, а наличию процесса в памяти. Есть утилиты и для win в том числе
PM MAIL   Вверх
ramus
Дата 13.2.2009, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А нельзя чтобы по FTP файл клался с именем <имя файла>.in_progress
А как положится быстро переименовывался в <имя файла> ?

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


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

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


 




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


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

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