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
Форумы портала PHP.SU :: Версия для печати :: Узнать загружен ли файл полностью..
Форумы портала PHP.SU » PHP » Программирование на PHP » Узнать загружен ли файл полностью..

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

1. InviS - 20 Мая, 2010 - 14:42:25 - перейти к сообщению
Ребят, нужно узнать, загружен ли файл полностью на сервер или нет... Взаимодействие с 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С сервером? Чтоб не пересекались выкладывания и парсинг?
2. ZeiZ - 20 Мая, 2010 - 15:02:07 - перейти к сообщению
InviS пишет:
нужно парсить в БД...

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

может на фтп стоит опция резерва места под файл? Не понял
сам не сталкивался с такими задачами, но интересно решение.
3. Мелкий - 20 Мая, 2010 - 16:09:05 - перейти к сообщению
InviS пишет:
Какая-то фигня выходила... Всегда эти два размера совпадают, хотя файл загружается... Почему?

Кэш.
filesize
Цитата:
Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache().
4. JustUserR - 20 Мая, 2010 - 16:22:10 - перейти к сообщению
InviS пишет:
Нужно узнать, загружен ли файл полностью на сервер или нет...
Если загрузка файла на FTP-сервер занимает продолжительное время то можете внутри вашего 1C-скрипта сделать вычисление размера файла или его контрольную сумму и сохранять ее рядом с файлом - таким образом вы можете считать к примеру текущий размер файла и его размер указанный в служебом файле и на основе этого узанть информацию о загруженности - также можно предложить делать блокировку файла на время загрузки например с помощью снятия прав доступа (С правами доступа открывается вообще много возможностей для этой задачи - если PHP-скрипт и 1C-скрипт дейтсвуют от имени различных пользователей) - или например путем просмотра текущий FTP-сессий
5. InviS - 20 Мая, 2010 - 17:14:16 - перейти к сообщению
JustUserR, я предлагал чет подобное (скидывать вообще какой-то 1КБ файлик после, который бы означал, что загрузка окончена уже) или загружать, а потом переименовывать его - не хотят... остается как-то вычислять размер... Сейчас гляну что там кешируется...
(Добавление)
Мелкий был прав, добавил эту функцию и все идеально работает! Спасибо! Проблему вроде бы решили ;)
6. JustUserR - 21 Мая, 2010 - 11:34:30 - перейти к сообщению
InviS пишет:
JustUserR, я предлагал чет подобное (скидывать вообще какой-то 1КБ файлик после, который бы означал, что загрузка окончена уже) или загружать, а потом переименовывать его - не хотят... остается как-то вычислять размер... Сейчас гляну что там кешируется...
Хотя в вашем случае проблема оказалась в кешировании но FTP-сервер может иметь возможность резервирования место под загружаемый файл - в таком случае можно было бы воспользоваться или предложенными выше методами или следущим методом - известно что загрузка и перезапись файла осуществляется блоками через определенный интервал времени - вам надо найти контрольную сумму файла и посмотреть ее через увеличенный ы 2-3 раза заданный интервал времени - если контрольная сумма не меняется то файл или закачался или соединение оторвалось а если меняется то закачка продолжается

 

Powered by ExBB FM 1.0 RC1