Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Узнать загружен ли файл полностью..

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
InviS
Отправлено: 20 Мая, 2010 - 14:42:25
Post Id


Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Ребят, нужно узнать, загружен ли файл полностью на сервер или нет... Взаимодействие с 1С в проекте... и сервер с 1С выкладывает на ФТП файл, который затем нужно парсить в БД... Но бывает бок, что время парсинга кроном и время, когда выкладывается файл совпадает.. и тогда все не оч. хорошо...
Попробовал делать что-то типа:
PHP:
скопировать код в буфер обмена
  1. function get_file_size($filename){
  2.   $size1 = filesize($filename);
  3.   echo "size #1 : $size1 bytes<br />";
  4.   sleep(2);
  5.   $size2 = filesize($filename);
  6.   echo "size #2 : $size2 bytes<br />";
  7.                
  8.   if ($size1==$size2) $result=true;
  9.   else $result=false;
  10.   return $result;
  11. }
  12.   if (get_file_size("1.csv")) echo "Файл загружен полностью";
  13.   else echo "Файл загружен не полностью!!!";

А сам параллельно выкладывал файл... Какая-то фигня выходила... Всегда эти два размера совпадают, хотя файл загружается... Почему?
Как можно наладить взаимодействие с 1С сервером? Чтоб не пересекались выкладывания и парсинг?
 
 Top
ZeiZ
Отправлено: 20 Мая, 2010 - 15:02:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 231
Дата рег-ции: Нояб. 2009  
Откуда: Москва


Помог: 0 раз(а)




InviS пишет:
нужно парсить в БД...

что парсить? размер, или это текстовые файлы?

может на фтп стоит опция резерва места под файл? Не понял
сам не сталкивался с такими задачами, но интересно решение.
 
 Top
Мелкий Супермодератор
Отправлено: 20 Мая, 2010 - 16:09:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




InviS пишет:
Какая-то фигня выходила... Всегда эти два размера совпадают, хотя файл загружается... Почему?

Кэш.
filesize
Цитата:
Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache().


-----
PostgreSQL DBA
 
 Top
JustUserR
Отправлено: 20 Мая, 2010 - 16:22:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




InviS пишет:
Нужно узнать, загружен ли файл полностью на сервер или нет...
Если загрузка файла на FTP-сервер занимает продолжительное время то можете внутри вашего 1C-скрипта сделать вычисление размера файла или его контрольную сумму и сохранять ее рядом с файлом - таким образом вы можете считать к примеру текущий размер файла и его размер указанный в служебом файле и на основе этого узанть информацию о загруженности - также можно предложить делать блокировку файла на время загрузки например с помощью снятия прав доступа (С правами доступа открывается вообще много возможностей для этой задачи - если PHP-скрипт и 1C-скрипт дейтсвуют от имени различных пользователей) - или например путем просмотра текущий FTP-сессий


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
InviS
Отправлено: 20 Мая, 2010 - 17:14:16
Post Id


Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




JustUserR, я предлагал чет подобное (скидывать вообще какой-то 1КБ файлик после, который бы означал, что загрузка окончена уже) или загружать, а потом переименовывать его - не хотят... остается как-то вычислять размер... Сейчас гляну что там кешируется...
(Добавление)
Мелкий был прав, добавил эту функцию и все идеально работает! Спасибо! Проблему вроде бы решили ;)
 
 Top
JustUserR
Отправлено: 21 Мая, 2010 - 11:34:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




InviS пишет:
JustUserR, я предлагал чет подобное (скидывать вообще какой-то 1КБ файлик после, который бы означал, что загрузка окончена уже) или загружать, а потом переименовывать его - не хотят... остается как-то вычислять размер... Сейчас гляну что там кешируется...
Хотя в вашем случае проблема оказалась в кешировании но FTP-сервер может иметь возможность резервирования место под загружаемый файл - в таком случае можно было бы воспользоваться или предложенными выше методами или следущим методом - известно что загрузка и перезапись файла осуществляется блоками через определенный интервал времени - вам надо найти контрольную сумму файла и посмотреть ее через увеличенный ы 2-3 раза заданный интервал времени - если контрольная сумма не меняется то файл или закачался или соединение оторвалось а если меняется то закачка продолжается


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB